我從伺服器收到一個json數組消息 ,數組裡面每個數都是Unity中的一個GameObject(GameObject上面帶有腳本Player.cs)Player這個腳本所需要的,這些伺服器數組裡面的消息每個數都要傳給Player.cs,就是每一次實例化一個GameObject帶一個腳本Player.cs 就是每次實例一個Player.cs ,這樣的話每個GameObject帶一個Player.cs腳本。而Player.cs中存在Update();

---------------以上是C#的設計---------------------而現在問題來了lua中表可以實現c#的面向對象,但是只是每個表添加一個實例,而這個實例的Update方法又如何執行呢???

--------------求大神告知!!!!!!非常感謝


可以參考房燕良前輩寫的LuaComponet,其原理是使用一個表結構來模擬MonoBehaviour的行為,這樣就可以在Lua腳本中實現和C#腳本同等地位的功能,而且Lua中的表結構是一個非常強大的數據結構,簡單如數組複雜如字典這樣的數據結構都可以實現,因此這個問題實際上C#到Lua的語法轉換問題,希望題主能花點時間了解下這個語言。···
定時器。

將LUA中所有需要執行Update方法的GameObject註冊到C#中,

C#中有個定時器,定時執行需要更新的GameObject的Update方法。
許你山高水長的回答不失為一種方案 我也考慮和嘗試了這種方法,不過我最終使用了群友提供的方法,在一個lua文件中創建一個表,可以實現類似c#的類 最後用C#註冊這個lua文件裡面的函數就可以實現update 但是想要用到unity的碰撞卻是一難題 我的下一個項目就要用到碰撞 所以學習還再繼續
有些第三方的Lua OOP庫,比如middleclassLua的面向對象歸根結底還是table,只不過「對象table」的元表是「類table」,對於繼承來說也是同理,「子類table」的元表是「父類table」

具體是否用LuaComponent的機制,倒不是很重要,LuaComponent的好處在於和MonoBehaviour的機制類似,但是比較浪費,畢竟不是所有組件都需要Update,TriggerEnter之類的介面的


table.insert


推薦閱讀:
相关文章