前提・実現したいこと
現在、ゲームオーバー時にオブジェクトの色を変えるという処理を行っているのですが、そのまま書き換えると色を変更したり、元に戻したりといったことができなくなってしまいます。そこで、初めに元のマテリアルカラーを読み取ろうと思っています。
Materialのカラーを変更する情報は多く見つかりましたが、現在のマテリアルカラーを読み取る方法がどうしても見つかりませんでした。
そこで、指定したゲームオブジェクトのマテリアルカラーを読み取る方法が知りたいです。
試したこと
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class SphereTaskGameOver : MonoBehaviour { 6 // Update is called once per frame 7 private float ColorLevel; 8 private bool ColorPlus; 9 Color[] Colors; 10 Material[] materials; 11 int i; 12 private void Start() 13 { 14 materials = GetComponent<Renderer>().materials; 15 i = 0; 16 foreach (Material material in materials) 17 { 18 Colors[i] = materials[i].color; 19 i++; 20 } 21 ColorLevel = 1; 22 } 23 void Update () { 24 if (Controller.GameOver == true) 25 { 26 if (ColorPlus) 27 { 28 ColorLevel += 0.01f; 29 } 30 else 31 { 32 ColorLevel -= 0.01f; 33 } 34 if (ColorLevel <= 0) 35 { 36 ColorPlus = true; 37 } 38 else if (ColorLevel >= 1) 39 { 40 ColorPlus = false; 41 } 42 materials = GetComponent<Renderer>().materials; 43 i = 0; 44 foreach (Material material in materials) 45 { 46 materials[i].color = Color.Lerp(Colors[i], Color.red, ColorLevel); 47 i++; 48 } 49 } 50 } 51} 52
以下のコードを試してみましたが出来ませんでした。
C#
1NullReferenceException: Object reference not set to an instance of an object 2SphereTaskGameOver.Update () (at Assets/Scouse/SphereTaskGameOver.cs:46)
エラーは案の定Nullのエラーでした。
{get;set;}となっていたので読み取りもできると思っていたのですが、出来ないのでしょうか
バージョン
最近更新したばかりで
2018.2.1f1です
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/03 01:51