2014年3月6日 星期四

unity+lua memo

1.在lua中使用itween
local hash = System.Collections.Hashtable()
local Vector3=UnityEngine.Vector3(0, 1, 0)
hash:Add("position", Vector3)
hash:Add("time", 1)
hash:Add("oncompleteparams",partner1 )
hash:Add("oncomplete", function(arg) testLabel.setText("ok") partner1.play("Skill") end)
tween(partner1.ui, hash);
主要問題在回呼的部份
需要修改C:\Users\Administrator\Downloads\KLITest-13362\KLITest\Assets\iTween\iTween.cs
callback function底下 加入
else if(tweenArguments[callbackType].GetType() == typeof(LuaInterface.LuaFunction)) {
(tweenArguments[callbackType]as LuaInterface.LuaFunction).Call((object)tweenArguments[callbackType+"params"]);
}

2.在playmaker裡的action,可以右鍵點開來查看script或編輯,可以做一些code的參考。

3.要在lua裡咡取ngui的button事件,在button上加入Component->NGUI->Internal ->Event Listener,接著在lua中。(其中auto_btn是我button的id)
local ui=UnityEngine.GameObject.Find("auto_btn")
local textcomponent=ui:GetComponent("UIEventListener")
textcomponent.onClick = function() print("okokokok") end
這樣就可以了 太神奇了...為什麼神奇,因為c#的原碼是長這樣
void OnClick () { if (onClick != null) onClick(gameObject); }
我本來以為至少要改成
if (onClick
.GetType() == typeof(LuaInterface.LuaFunction) onClick.call(gameObject);
結果居然不用...(所以我寫code都用猜的嗎XD


沒有留言:

張貼留言