

以下のように、  
Start()の中で、色を変える処理を行うと、できるのですが

Update()の中でおこなうとスルーされ、処理がおこなれません  
ちなみに位置の取得はできました。

また、色情報を取得したところ、Debug.Logでは色を変えた状態で取得できました。  
ただ、実行結果（画面）は色が変わらないままでした。

分かる方いらっしゃいましたら、ご教授よろしくお願いいたします。

[code]

    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;
    
    public class BattleMain : BattleBase {
    
        protected int _sceneTask;
        //public GameObject prefab = (GameObject) Resources.Load("Object/MassTile");
        public GameObject prefab = null;
        public GameObject[,] mass = new GameObject[15,15];
        int isk;
        int jsk;
        // Use this for initialization
        void Start () {
    
            // 配置するプレハブの読み込み 
            //GameObject prefab = (GameObject) Resources.Load("Object/MassTile");
            // 配置元のオブジェクト指定 
            GameObject stageObject = GameObject.FindWithTag("Stage");
            //// タイル配置
            for(int i = 0; i < 15 ; i ++) {
                for(int j = 0; j < 15 ; j ++) {
    
    
                    Vector3 tile_pos = new Vector3(
                        0 + prefab.transform.localScale.x * i,
                        0,
                        0 + prefab.transform.localScale.z * j
    
                        );
    
                    if(prefab != null){
                        // プレハブの複製 
                        GameObject instant_object = Instantiate(prefab,tile_pos, Quaternion.identity) as GameObject;
                        // 生成元の下に複製したプレハブをくっつける 
                        instant_object.transform.parent = stageObject.transform;
                        mass[i,j] = instant_object;
                    }
                }
            }
            int Ivent = Random.Range(4, 7);//ランダムにイベントマスの設置
            for(int p = 0; p < Ivent;p++){
            int iRandNum = Random.Range(0, 14);
            int jRandNum = Random.Range(0, 14);
            mass[iRandNum,jRandNum].GetComponent<Renderer>().material.color = new Color(0.2f, 0.8f, 0.9f, 0.5f);
            }
    
    
        }
    
    
        // Update is called once per frame
    
        void Update(){
            mass[5,5].GetComponent<Renderer>().material.color = new Color(0.0f, 0.0f, 0.0f, 0.0f);
            Debug.Log (mass [5, 5].GetComponent<Renderer> ().material.color);
            mass [1, 5].GetComponent<Renderer> ().material.color = new Color (0.2f, 0.8f, 0.9f, 0.5f);
            Debug.Log (mass [1, 5].GetComponent<Renderer> ().material.color);
        }
    
    
    }
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/9dxz2.jpg)](https://i.stack.imgur.com/9dxz2.jpg)

[![画像の説明をここに入力](https://i.stack.imgur.com/h1LDA.jpg)](https://i.stack.imgur.com/h1LDA.jpg)


CC BY-SA 3.0
2016-04-20T13:26:32.970
24188
2016-07-27T12:49:06.703
2016-07-27T12:49:06.703
15185
14333
question
unity3d
Update()の中で色を変える処理（material.color）を行うと、なぜかスルーされます。


Unity 5.3.1 ですが、意図してる通りに 5,5 の位置のマスが黒くなりました。  
もしかして同じオブジェクトに複数の BattleMain がアタッチされてますか？

[code]

    this.btm = this.gameObject.GetComponent<BattleMain>();
    
[/code]

この記述が不思議で、普通だったら this.btm == this になるはずです。  
試しに、↓これで動くでしょうか？

[code]

    void Update(){
    //    btm.SyuIti ();//スルーされる
        SyuIti ();
    }
    
[/code]


CC BY-SA 3.0
2016-04-21T03:16:28.227
24200
2016-04-21T03:16:28.227
2079
24188
answer