1.xlua中监听Toggle的OnValueChange事件
问题
使用xLua时,发现监听一些带有泛型委托,比如Toggle,DropDown,Slider
等事件的时候,会有下图的报错。
(例如监听Toggle
的onValueChanged
事件)
原因
是C#静态调用Lua的设置里少了对应类型的配置。在XLua
文件夹里找到Examples/ExampleGenConfig.cs
,没找到的话全局搜索一下ExampleGenConfig。我之前打手机包的时候,不想把xlua的案例打进apk,所以把整个Examples文件夹删除了。这时只要重新去github上下载,然后解压就行了。
解决方案
- 在ExampleGenConfig.cs里找到
[CSharpCallLua]
在最后加入相关类型的泛型委托就行,OnValueChange事件需要的是bool类型的。添加如下两行代码即可:
typeof(UntiyEngine.Events.UntiyAction<bool>),
typeof(UntiyEngine.Events.UntiyAction<float>)
- 在Unity编辑器上重新生成一下xlua代码
点击Generate Code
生成代码,完成后点击Hotfix Inject In Editor
注入修补程序。
2. prefab的旋转,rotation和rotate。
在做伤害跳字的时候,想修改跳字的rotation,沿着x轴旋转45度,遂使用了如下代码,但发现根本不是预期的效果。
local rotation = self.monObj.transform.rotation
rotation.x = 45
rotation.y = 0
rotation.z = 0
local jumpFont = UE.GameObject.Instantiate(self.dumpFont, position, rotation)
这里需要了解一下rotation和rotate的区别,后来修改为
local jumpFont = UE.GameObject.Instantiate(self.jumpFont, position, UE.Quaternion.Euler(UE.Vector3(45,0,0)))
使用UE.Quaternion.Euler(UE.Vector3(45,0,0)
才能沿着x轴旋转45度。
3.图文混排
Text属性支持使用html格式,"[color></color]"的格式。
眺字根据不同的类型,配置了很多的动画(普攻、技能、状态、特殊、暴击等)。 用Animators
4.lua.bytes文件
https://zhuanlan.zhihu.com/p/490755117
解包后有一堆的lua.bytes,这些是lua代码编译后的文件。lua的编译器有Luac和LuaJit。类似gcc和g++对于C++代码。
5. 界面UI的bug
1.修正资源界面,在主界面和副本场景中,都能显示
a.之前在副本中,显示位置不正确,是因为父节点UI和主界面的挂载点,设置不一样
b.调整后发现资源界面没了,是因为没注意缩放为(0,0,0,)
c.字节点不能修改属性,是因为父节点使用了【布局】类组件