【未解決】クラスのデータに複数のオブジェクトからアクセスすると最後の情報で統一される

【現象】処理の中で同一のPrefabから(同種の/しかし別々の)GameObjectを生成し、GameObject付随の処理の中で他クラスで定義しているデータにアクセスし使用した際、すべてのGameObjectで最後の情報に統一される。 【具体的には】爆弾を設置する時、火力は…

Unity C# 小技集

適宜追加。 int型変数をstring型に変換するToString() string mesg = "hogehogeMessage"; int beastNum = 666; mesg += beastNum.ToString(); Debug.Log(mesg); OnCollision*系列とOnTrigger*系列の違い OnCollisionEnter(Collision)/Exit/StayとOnTriggerEn…

ユーザ側でのキーコンフィグを可能にする/Input.GetButton

Update中にif(Input.GetKeyDown(KeyCode.Q))のような形で記述すれば特定のボタンを押したときの動作を実装できるが、この方法だと完全にQのキーしか使えない。 ユーザ側でのキーコンフィグを可能にする。と同時に対応キーを後々から変更したい場合に対応する…

オブジェクトの破壊時にイベントを起こす:OnApplicationQuit/OnDestroy

なにかのオブジェクトが破壊された時に、自動的にイベントを起こしたい場合。http://answers.unity3d.com/questions/169656/instantiate-ondestroy.htmlそのオブジェクトをDestroyする時にコードを実行するのでなく、破壊される時に勝手に実行してほしい場合…

スクリプトからゲームオブジェクトにコンポーネントを追加/削除する:AddComponent / Destroy

HierarchyでのD&DやInspectorでのAdd Componentではなく、スクリプト内部で動的にコンポーネントを追加/削除する。 以下、C#ファイルactRemoteBombを追加するケース。 private actRemoteBomb remoteBombComp; : : remoteBombComp = null; : : // 追加の前に…

インスペクタ側から値を設定するビルトイン配列:Builtin Array

スクリプト側でpublicの配列の宣言のみするとインスペクタ側でサイズ(要素数)および配列要素の中身を設定可能。 public GameObject[] ItemInstances;

他スクリプト内の関数を使用する:GetComponent

他のオブジェクトに接続しているスクリプト内の関数を使用したいケース。 FindやGetComponentは重いらしいので極力Start関数内で一度だけ使用する。 // オブジェクト・コンポーネント取得用変数宣言. GameObject bombCtrl; bombGenerator bombGene; : : // F…

線を飛ばしてその途中接触した全オブジェクトを取得する:RaycastAll

Raycastは最初に接触したオブジェクトまでだが、この方法は接触した全オブジェクトを取得可能。 以下サンプルコード // 指定地点最寄のセンターポイントを取得する. // Y軸(高さ)は引数として関数呼び時に指定する. public Vector3 GetNearestCenterPoint(…