在File_Build Settings-Player Settings-other Settings-Scriptsing Define Symbols中输入HOTFIX_ENABLE按ENTER
在File_Build Settings-Player Settings-other Settings-Scriptsing Define Symbols中输入HOTFIX_ENABLE按ENTER
IEnumerator LoadResourceCorotine(string resName
UnityWebRequest request=UnityWebRequest.GetAssetBundle
yield return request.SendWebRequest();
AssetBundle ab=request.downloadHandler as DownloadHandler).assetBundle;//将下载的内容作为ab包
GameObject gameobject=ab.LoadAsset<GameObject>(resName)
prefabDict.Add(resName,gameObject)
}
记一下随机数的坑
1.unity里的随机数方法有两个,一个是int参数,一个是float参数。
但是lua里只有number
lua调用时会调用到float的方法。
2.我用lua自带的 math.random(min,max)
但是这里也有个坑
unity里的 Ramdon.Range(min,max) 不包括max
而lua里的math.random(min,max) 包括了max
最后导致了数组索引越界。
所以最后用了math.random,记得把传入的max值-1就好了
另外
local halfLength = self.fishList.Length/2
这里可能会得到小数
直接传入math.random会报错
向下取证就好了
local halfLength = math.modf(self.fishList.Length/2)
hotfix使用
1.在类上打上hotfix标签
2.在方法上加上luacallcsharp
3.生成xlua文件
4.执行hotfix标签
5.在lua中加入c#dll
6.在lua中 通过hotfix的方法调用重写该方法
这节课笑场了哈哈哈哈 call call calllllll
Lua掉用C#成员方法方法,要么使用冒号要么加参数
啊,团子大家族,泪目了
build项目的时候,出错误,要删xlua中的example文件夹
[MenuItem("Assets/AssetBundle")]
lua可以直接调用C#的共有方法
访问函数内的共有变量则要加上self.变量名
function(self){
self.变量名
},
调用函数内的私有变量,就要在方法前加上
xlua.private_accessible(CS.函数名)
函数名中填写你需要访问的私有变量所在的函数
下载
知识点:
协程在static方法中不能开启,要转为普通方法
未预测新类补丁开发的处理方法
1.建立一个空类
2.在空类中实现热补丁
短板知识:lua使用c#泛型
坑:lua使用C#重载方法
解决思路:
1.有C#的方法去整值
2.lua的math.floor
坑:lua使用C#重载方法
导入util库
把util文件放到补丁脚本文件夹
require 'util'
util.hotfix.ex(class,'method',function(self)
self.method()
--自己的代码
end)
注销方法同xlua.hot
坑:
lua放在start里 无法保证补丁会在所需start之后,导致无效
要保证打补丁要先执行。
判断鼠标是否点在UI上
EventSystems.EventSystem.current.IsPointerOverGameObject()