読者です 読者をやめる 読者になる 読者になる

Unityについて学んだことあれこれ

スパイダーマン風Oculusを作る中でUnityの使い方関連で色々ひっかかってます。

Unity初心者なので英語から日本語からサイトを調べまくり、ようやく少しわかってきました。


せっかくなので、ネットで調べても簡単に出てこなかった内容を書いておきます。
(実は単に調べ方が悪かっただけかもですが(^ ^; )


なお、記述は全部C#です。

ObjectAにアタッチされたスクリプトAがObjectAのコンポーネントを参照するときの記述方法

this.gameObject.

(使用例)

	void FixedUpdate(){
		if(rigidBodyEnabled == true){
		this.gameObject.rigidbody.AddForce(moveDistance,ForceMode.Force);	
		}	
	}

オブジェクトに物理運動をさせるとき

-> オブジェクトに rigidBodyコンポーネントを付ける

-> AddForceなどの物理的な動きは必ずFixedUpdateの中に記述する。Update()の中に記述すると、密閉した部屋で空気抵抗なしのスーパーボールを跳ねさせるような不可解な動きをする。

ObjectAにアタッチしたscriptAに書かれたFuncA関数を、scriptBのFuncB関数から呼びたいとき

-> sendMessageメソッドを使うか、スクリプト名(クラス名)を使ってアクセスする。

使用例1
 public GameObject ObjectA;
   ObjectA.gameObject.SendMessage("FuncA");
使用例2
  ScriptA scriptA;
 scriptA = GameObject.Find("ObjectA").GetComponent<ScriptA>();
 scriptA.FuncA();

いずれの場合であっても、UnityのInspector ViewでObjectAに、"ObjectA"をドラッグ&ドロップする必要があります。

とくに、使用例2を使うと、public宣言した変数を呼ぶこともできるので使い勝手がよさそうです。

例えば、scriptA.csで

public Vector3 testDistance;

とあったとき、scriptBでは

scriptA.testDistance;

と書くことで値を取得できます。

#regionでソースコードの可読性向上

 #region を使うと、Monoエディタで、任意の範囲を一つに囲うことができるので可読性が向上します。

 Oculusのサンプルコードにもいくつか使っていましたが、

   #region variable
  public Vector3 test1;
  public Vector3 test2;
  public Vecto3 test3;
  #endregion

 とすることで、test1,test2,test3を一つにまとめることができます。コードが長くなったときは便利だと思います。


ところで、次回のOculusFestival in Japanが9/23に決まりました。

場所は前回と同じです。スパイダーマン風Oculusを出せるようにがんばって作ります!

広告を非表示にする