スクリプトから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を変更していました。
コメント