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を変更していました。

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です