組み込み技術を向上したい!!

でも組み込み以外にも手を出し始めました・・・

Unity の基本codeメモ

Sceneの中からGameObject見つけたいとき

 GameObject obj = GameObject.Find("obj_name"); 

GameObjectのComponentにアクセスしたいとき

例えば、オブジェクトのテキストを変更するなら

 GameObject obj = GameObject.Find("obj_name"); 
 obj.GetComponent<Text>().text = "hello";

オブジェクトに付けたスクリプトの関数呼びたいなら

// obj_nameに付けたSourceManager.csに書いたFunc()を呼びたいとき
var obj = GameObject.Find("obj_name");
obj.GetComponent<SourceManager>().Func(); // public宣言することを忘れずに

一度GameObjectで受けなくてもダイレクトでもいじれる。例えばSliderの値なら

GameObject.Find("Slider_name").GetComponent<Slider>().value;

定期処理とかでコルーチン使うとき

例えば、0.1秒だけカメラ変えたいとき。

IEnumerator Coru()
{
    while (true)
    {
        GameObject cam = GameObject.Find("Cameras");
        GameObject cav = GameObject.Find("Canvas");
        // メインカメラがアクティブなら
        if (cam.transform.FindChild("Main Camera").gameObject.activeSelf == true)
        {
            // カメラの位置を0.1秒間変える。(別カメラにする)
            cav.GetComponent<Canvas>().enabled = false; // gui消す
            cam.transform.FindChild("Main Camera").gameObject.SetActive(false);
            cam.transform.FindChild("SubCamera").gameObject.SetActive(true);
            yield return new WaitForSeconds(0.1f); // 0.1秒後にもう一度コルーチンが呼ばれるようにする
        }
        else
        {
            // 0.1秒後にカメラを戻す
            cav.GetComponent<Canvas>().enabled = true; // gui表示する
            cam.transform.FindChild("SubCamera").gameObject.SetActive(false);
            cam.transform.FindChild("Main Camera").gameObject.SetActive(true);
            yield break; // コルーチン終了する
        }
    }
}

んでコルーチン呼びたいときは

StartCoroutine("Coru");


結果、Unity 面白れぇ!!