[請益]unity在遊戲中設置紅綠燈發生錯誤

作者: rede1420 (星晴)   2017-11-29 21:55:34
如題
我嘗試在unity裡面設置紅綠燈
以下是JS的寫法,確認可以執行,但我想將它改成C#寫法就發生錯誤了
var Red : Light;
var Green : Light;
var Yellow : Light;
function Start()
{
Yellow.enabled = false;
while(true)
{
Green.enabled = true;
Red.enabled = false;
yield WaitForSeconds(10);
Yellow.enabled = true;
Green.enabled = false;
yield WaitForSeconds(4);
Red.enabled = true;
Yellow.enabled = false;
yield WaitForSeconds (10);
}
}
正常執行如下
https://imgur.com/a/8BJyo
以下是修改過的C#寫法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tflc : MonoBehaviour
{
Light Red;
Light Green;
Light Yellow;
// Use this for initialization
void Start()
{
Yellow.enabled = false;
while (true)
{
Green.enabled = true;
Red.enabled = false;
yield return new WaitForSeconds(10);
Yellow.enabled = true;
Green.enabled = false;
yield return new WaitForSeconds(4);
Red.enabled = true;
Yellow.enabled = false;
yield return new WaitForSeconds(10);
}
}
}
在void Start()顯示說void不是Iterator介面
將它改成IEnumerator Start()後
會沒有辦法套用設置的light物件
如下圖
https://imgur.com/a/BL7rq
想問問大家要怎麼修正才可以正常執行
謝謝大家
作者: cjcat2266 (CJ Cat)   2017-11-29 22:46:00
void Start()不能回傳值,要額外開coroutinehttps://docs.unity3d.com/ScriptReference/WaitForSeconds.html
作者: rede1420 (星晴)   2017-11-30 01:02:00
程式碼的部分解決了,但是沒辦法帶入light資料,如圖二是因為程式碼的關係嗎,還是物件的關係?
作者: sammon (海帶)   2017-11-30 01:15:00
前面加個public像是public Light Red這裡可以參考https://goo.gl/MSH2PE
作者: rede1420 (星晴)   2017-11-30 02:10:00
解決問題了,謝謝你們
作者: cowbaying (是在靠北喔)   2017-11-30 08:10:00
物件導向的觀念還不夠清楚 多多練習吧另外變數範圍 全域或區域的分配也很重要因為遊戲架構通常都不簡單 要好好的規劃變數規則
作者: chargo (凍結的城市)   2017-11-30 11:51:00
while(true)非必要還是不要在monoBehavior裡用你需要的是coroutine或者Update()
作者: rede1420 (星晴)   2017-11-30 22:54:00
謝謝大家的建議與指教,這次因為完工日期有點緊迫迫不得以之下只能上來詢問大家,往後會再多多練習的

Links booklink

Contact Us: admin [ a t ] ucptt.com