xlua菜鸟初学(五)
2020-04-24 10:45
585 查看
这次我尝试进行本地加载ab包对之前的创建正方体进行修改,使其创建球体。
首先对之前的HoFixScripts脚本修改,使其可以获取本地的ab包
using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; using System.IO; public class HoFixScripts : MonoBehaviour { private LuaEnv luaenv; public static Dictionary<string, GameObject> dir = new Dictionary<string, GameObject>(); // Use this for initialization void Awake () { luaenv = new LuaEnv(); luaenv.AddLoader(byte_text); luaenv.DoString("require'hello'"); } private byte [] byte_text(ref string filepath) { string abs = @"D:\Lua\" + filepath +".lua.txt"; return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(abs)); } private void OnDisable() { luaenv.DoString("require'fish'"); } private void OnDestroy() { luaenv.Dispose(); } public static void load(string name,string file) { AssetBundle ab = AssetBundle.LoadFromFile(@"D:\Game\boke_lua\AB\" + file); GameObject ob = ab.LoadAsset <GameObject>(name); dir.Add(name, ob); } public static GameObject get_object(string name) { return dir[name]; } }
第二步,进行简单的打包
创立一个脚本,放在Editor文件下
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using UnityEditor; public class CreateAssetBundles { [MenuItem ("Assets/Start")] static void create() { string str = "AB"; if(Directory .Exists(str)==false) { Directory.CreateDirectory(str); } BuildPipeline.BuildAssetBundles(str, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64); } }
然后创建一个球体最为打包的内容
最后对之前的lua脚本进行修改
xlua.private_accessible(CS.Creat_cube) xlua.hotfix(CS.Creat_cube,'Start',function(self) CS.HoFixScripts.load('Sphere','gameobject\\sphere.ab') for i=0,2,1 do local go=CS.UnityEngine.GameObject.Instantiate(CS.HoFixScripts.get_object('Sphere'), self.transform.position+CS.UnityEngine.Vector3(10 * i + 5, 0, 0), self.transform.rotation); self.print_number(self,'88') self:print_char('bb') end end)
最后结果
插个题外话:要注意类型转化。比如在lua做产生随机数,调用c#的方法,但c#的Range函数有int和float类型的,一般lua是使用float的,但随机产生的值会变成float的,最后float赋值int时,会默认为0.所以在lua中要将float转化为int。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 菜鸟初学Java的备忘录(五)
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习8
- 安卓开发菜鸟初学
- 菜鸟初学Java的备忘录(四)
- lua和V8 JavaScript初学中,,,,(二)
- Lua初学——字符串
- 菜鸟学Python(10):初学JSON
- 【初学菜鸟作--samba搭建与配置】*首页贴^_^*
- 自己是个菜鸟 自己查找的简单的适合初学的Makefile
- 菜鸟初学android体验之——实现自定义简单标题栏的两种简单方法
- 编程菜鸟的日记-初学尝试编程-寻找2到n之间的素数并输出
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习6
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习6
- 菜鸟初学Java的备忘录(三)
- 菜鸟初学JSP
- 【Lua】元表初学
- 《数据结构与算法》C语言实现,严蔚敏版;菜鸟小白初学《Data Structure》
- 菜鸟初学H.264--VC6下调试T264编解码器全过程
- 【菜鸟初学Swift】IOS平台常用传感器的使用方式
- Lua初学