Unityで電球をボタンでオンオフするものを作っています。理想はこんな感じです。
Unityのバージョンは2018.4.19f1です。
PointLightを使い、最初は非アクティブの状態にし、スクリプトでSetActiveを使いアクティブにしようとしました。
動かしたところPointLightがアクティブ状態にならないです。
もしかしたら使い方が間違っているのかもしれませんがわかりません。
スクリプトは親オブジェクトのLamp2につけています。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Light_onoff : MonoBehaviour 6{ 7 public Material[] _material; // 割り当てるマテリアル. 8 public GameObject[] _light; // 割り当てるライト 9 public GameObject[] _Battery; // 乾電池 10 public GameObject _lamp; // 電球 11 12 13 // Start is called before the first frame update 14 void Start() 15 { 16 _light[0] = transform.Find("Point Light1").gameObject; 17 _light[1] = transform.Find("Point Light2").gameObject; 18 _light[0].SetActive(false); 19 _light[1].SetActive(false); 20 21 _Battery[0].SetActive(true); 22 _Battery[1].SetActive(false); 23 _Battery[2].SetActive(false); 24 25 } 26 27 // Update is called once per frame 28 void Update() 29 { 30 31 } 32 33 public void Click_Light() 34 { 35 _lamp = GameObject.Find("Light"); 36 37 _light[0] = transform.Find("Point Light1").gameObject; //ここでPoint Light1 38 _light[1] = transform.Find("Point Light2").gameObject; //ここでPoint Light2 39 40 if (_light[0].activeSelf == true || _light[1].activeSelf == true) 41 { 42 43 _light[0].SetActive(false); 44 _light[1].SetActive(false); 45 _lamp.GetComponent<Renderer>().material = _material[0]; 46 47 } 48 else 49 { 50 if(_Battery[0].activeSelf == true || _Battery[2].activeSelf == true) 51 { 52 _light[0].SetActive(true); //何故かここがつかない 53 _lamp.GetComponent<Renderer>().material = _material[1]; //ここは動いてる 54 55 } 56 else if(_Battery[1].activeSelf == true) 57 { 58 _light[1].SetActive(true); 59 _lamp.GetComponent<Renderer>().material = _material[1]; 60 61 } 62 63 } 64 } 65}
[追記]
後々にはARに移行させたいため、アタッチせずに探し出せた方が嬉しいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。