Imageのcolorがインスペクタとエディタで一致しない現象

スクリプトからImageのcolorを変更した際に、GameビューやSceneビューで色の変更が反映されていないのに、インスペクタ上で確認するとちゃんと反映されている、という奇妙な現象が起こりました。(しかも再現性あり)

Inspector上の色とGameビューやSceneビューでの見た目の色が全く異なるため、まあUnityのバグなのかなと思ったのですが、、、

Unityのバージョンは2019.1.1f1です。

原因(?)

Imageのspriteとcolorを重い処理と同時に変更すると、このバグ(?)が起こるようです。

僕がこの問題をに直面した時には、


classA : MonoBehaviour {
    void MethodA {
        classB.ChangeColor();  //別クラスでcolorを変更
        DoHeavy();  //めっちゃ重い処理
        image.sprite = mySprite;  //spriteを変更
    }

    void DoHeavy() {
        for(int i = 0; i < 10000; i++) {
            GameObject obj = Instantiate(objPrefab, parent) as GameObject;
        }
    }
}

classB : MonoBehaviour {
    public void ChangeColor() {
        image.color = myColor;
    }
}

のような状態でした。
1万個のオブジェクトを生成するのと同時にImageのcolorとspriteを変更していました。

コメント