首先,其實不是熱更新,而是更新。
熱更新意思是不重啟游戲,但只要你腳本里有存儲數據,就不可能。所以只能叫更新。
但大家都這么說,所以。。。
先舉個具體的例子:
如果是C#:在 Prefab 的 GameObject 上綁定 C# 腳本,這個 Prefab 會被打包成 AssetBundle,然后通過 AssetBundle.Load 加載到游戲中。
因為C#本身不可能更新,所以就無法修改。
JSB的方案是,將這些 C# 的 MonoBehaviour 都替換成 JSComponent_xxx。這些 JSComponent_xxx 是固定不變的,不需要更新,他負責將所有的事件都轉交給JS去處理。
那么就可以通過更新JS來達到更新程序的目的。