[14]lua呼叫使用C#中的事件和委託
C#指令碼:繼續在Student類中宣告
//宣告委託和事件
public UnityAction dele;
public event UnityAction eventAction;
public void DoDele()
{
if (dele != null)
dele();
}
public void DoEvent()
{
if (eventAction != null)
eventAction();
}
public void ClearEvent()
{
eventAction = null;
}
lua中進行呼叫:
--使用委託
function testFun()
print("我在委託中執行 testFun")
end
--第一次委託新增函式時候要直接賦值
student.dele = testFun
student.dele = student.dele + function()
print("我是匿名函式哈哈哈")
end
--不可以直接執行委託 student。dele()
student:DoDele()
--取出函式
student.dele = student.dele - testFun
print("減去TestFun函式")
student:DoDele()
--清空委託中的函式
student.dele = nil
--使用事件
function testFun1()
print("我在事件中執行 testFun1")
end
function testFun2()
print("我在事件中執行 testFun2")
end
student.eventAction = student.eventAction + testFun2
student.eventAction = student.eventAction + testFun1
--觸發事件
student:DoEvent()
--從事件中移除函式
student.eventAction = student.eventAction - testFun2
print("再次觸發事件")
student:DoEvent()
--不可以直接移除事件
print("事件清除")
student:ClearEvent()
[15]lua呼叫使用Unity中的協程
----使用C#中的協程
--宣告一個協程型別
local Timer = nil
function Counter()
local t = 0
while true do
print(t)
WaitForSeconds(1)
t = t + 1
if t > 60 then
StopTimer()
break
end
end
end
--開啟計時器
function StartTimer()
Timer = StartCoroutine(Counter)
end
--停止協程
function StopTimer()
StopCoroutine(Timer)
Timer = nil
end
--呼叫函式開啟計時器
StartTimer()
注意在lua呼叫入口進行LuaCoroutine註冊