unity3d 類與類之間的通訊

2021-08-21 23:38:01 字數 1059 閱讀 3844

指令碼互動

優雅地管理你的**

委託、事件、單例在unity3d中的使用

1,靜態函式,直接使用類呼叫。

basicgrammar.fun();

2,直接引用,建立prefab,掛載指令碼。

public basicgrammar bg; 在面部中掛載有basicgrammar指令碼的prefab。

優點: 簡單高效,編輯器中直接可見。

缺點: 指令碼間強耦合,乙個指令碼的變化可能帶來鏈式反應,也容易出現"null referenceexception"異常

3,獲取到物件,使用sendmessage。

gameobject.find(gameobject.name).sendmessage("fun3"); //能呼叫private型別函式

優點:  低耦合,呼叫方便。

缺點:不言而喻基本沒什麼程式設計師愛用,效率較低,以字串的形式呼叫不是型別安全的,出錯除錯起來十分困難

4,獲取到物件,直接呼叫函式。

gameobject.find(gameobject.name).getcomponent().fun2();

5,使用delegate和event。

在b類中獲得a類的物件,然後將b類的方法註冊給a類的委託(a.delegatea = funb)即可。

a類在需要的地方呼叫委託即可呼叫到b類的函式。//能呼叫private型別函式

6,使用單例模式。

basicgrammar.instance.fun();

優點: 邏輯結構清晰,有效解決了多對一的呼叫需求

缺點: 要保證單例的構造比子模組的構造早,單例的生命週期要控制好,單例類後期會變得極其臃腫

思考:使用1:a,b,c,danli類,4個類全部掛載。danli類初始化時拿到a,b,c,3個類的物件,a,b,c類之間的互動使用danli類裡的a,b,c的物件。

使用2:a,b,c,danli類,4個類全部掛載。a,b,c,3個類初始化時將需要使用的類註冊到danli類的事件裡,然後a,b,c類之間的互動使用danli類裡的事件。

7,使用觀察者模式(或者是類似於觀察者模式),完成訊息之間的通訊。

Unity3D與Web之間的通訊

本示例利用u3d2.5中的island demo專案為例,加入 顯示unity3d與web之間的通訊方法。執行環境為unity4d 4.0 由我的導師進行總結,很棒!1 unity3d中設定 在u3d下建立空物體webconnect,為其新增 webconnect.js 具體 如下 webconne...

Unity3D學習之(抽象類)

首先今天老師帶領我們回顧了一下繼承 1 什麼叫繼承 繼承 子類繼承父類用 2 繼承的格式是 子類宣告 父類 3 繼承都有哪些特徵呢?下面 我們一一道來 繼承的特徵 子類擁有父類的所有屬性和方法 除構造方法外 子類只能訪問父類用public和protected修飾的屬性和方法 單繼承 用sealed ...

Android和Unity3D之間的資料互動

如果將乙個unity3d專案匯出成android工程,然後將該專案作為另乙個android專案的module使用時,如果涉及到相互呼叫,可以寫乙個activity繼承自unityplayeractivity public class unityactivity extends unityplayer...