unity-lua入门二

    今天打包了一个简单的prefab,调用之后发现报一个奇怪的错误,说不在主线程中,百度之后说是AnimationClip加载的问题,在unity2017.3.b

中修复,于是把动画先干掉,坐等升级在弄吧。

   用Vector3的时候,其实是用了lua自己实现的Vector3类,这里使用了

Vector3.__call = function(t,x,y,z)
   local t = {x = x or 0, y = y or 0, z = z or 0}
   setmetatable(t, Vector3)               
   return t

当调用Vector(x,y,z)的时候,将一个table设置为x,y,z,并把它的元表设置为Vector3

这里我们也发现作者已经对位置赋值有所优化。

o = ToLua.ToObject(L, 1);
            UnityEngine.Transform obj = (UnityEngine.Transform)o;
            UnityEngine.Vector3 arg0 = ToLua.ToVector3(L, 2);
            obj.position = arg0;

是通过读取lua堆栈的xyz来在c#层面新构建一个Vector3,这样速度会比直接在lua里使用c#的Vector3要快。


然后是Lua里面的Update.

它的原理是c#里的LuaLooper里的Update不断通过c调用lua语言里的Update函数。

理论上性能不是特别好。但lua本身是没有定时器的,所以这么做也无可厚非吧。

然后通过和蒙哥的交流,已经不能用Update来实现了,效率比价低,需要使用协程来做。


function Update()
   print(count)
   coroutine.wait(10)
   count = count + 1
   coroutine.start(Update)
end

这样子就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yxriyin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值