Unityのスクリプト実装で迷ったりよくわからなかったりした部分を書き留めたメモ。
スクリプトとUnityオブジェクトの関連付けが中心。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
//スクリプトからオブジェクトを作成する //シーン直下に配置する Instantiate(obj, new Vector3(0f,0f,0f),Quaternion.Euler(0,0,0)); //特定フォルダ下に置く Transform t=(Transform)Instantiate(obj, new Vector3(0f,0f,0f)); t.transform.parent = folder.transform; //スクリプトでオブジェクトを取得する //基本 //public変数にしてInspectorからアタッチする public GameObject xxx; //アタッチなしでシーンから取得 //名前で探す GameObject.Find("Folder"); GameObject.Find("Folder/Xxx"); //タグで探す GameObject.FindWithTag("Respawn");//単数 GameObject.FindGameObjectsWithTag("Respawn");//複数 //アタッチなしでプレハブからロードする //Assetの下にResourcesフォルダを作ってそこに配置する必要がある //"Asset/Resources/Prefab/Xxx"の読み込み GameObject xxx = (GameObject)Resources.Load("Prefab/Xxx", typeof(GameObject)); //コンポーネントの追加 //RididBodyの追加 xxx.gameObject.AddComponent<Rigidbody>(); //スクリプトの追加も動的にできる xxx.gameObject.AddComponent<クラス名>(); xxx.gameObject.AddComponent(Type.GetType("クラス名")); //コンポーネントの取得 //RididBodyの取得 Rigidbody rigidbody = xxx.gameObject.GetComponent<Rigidbody>(); //アタッチしてあるスクリプトのpublic要素にアクセスする //使わない気もするけどSendMessageだと返り値は受け取れないのでこの方法を用いることもあるかも aaa = xxx.gameObject.GetComponent<クラス名>().aaa; bbb = xxx.gameObject.GetComponent<クラス名>().getBbb(); //public static変数ならそのままアクセスできる ccc = クラス名.staticVariable; //その他メモ //フレーム当りの時間 Time.deltaTime //重力変更 Physics.gravity=new Vector3(0,-3,0);//デフォルトは(0,-9.81,0); //floatの比較(計算誤差対策/ちゃんとするならFLT_EPSILON定義したりする) bool isEq(float a, float b, float th = 0.0001f){return Mathf.Abs(a - b) <= th;} //オブジェクトのループ foreach (Transform child in folder.transform){ Debug.Log(child.transform.position.x); } //アプリ終了 if(Input.GetKey(KeyCode.Escape))Application.Quit(); //ランダムな数値が1つずつ入った配列 List<int> list = new List<int>(); while(true){ int i = Random.Range( 0, 13 );//0-12 if(!list.Contains(i))list.Add(i); if(list.Count==13)break; } int[] arr = list.ToArray(); //マウスクリック(スマホのタップ)で対象を動かす void OnMouseDrag(){ Vector3 ops = Camera.main.WorldToScreenPoint(this.transform.position); Vector3 mpw = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, ops.z)); this.transform.position = mpw; } //Nフレーム後に実行 StartCoroutine(Delay(1,()=>{a=b;})); IEnumerator Delay(int f, Action act) { for (var i = 0; i < f; i++) yield return null; act(); } //ストレージ保存 //保存できるのはInt,Float,Stringでそれぞれ関数名が異なる //値の保存 PlayerPrefs.SetXxx(key, value); //値の取得 PlayerPrefs.GetXxx(key, defaultValue); //存在確認 PlayerPrefs.HasKey(key) //すべてのキーと値を削除 PlayerPrefs.DeleteAll //キーと値を削除 PlayerPrefs.DeleteKey(key); //ApplicationQuit()以外でのセーブ実行 PlayerPrefs.Save(); |