[请益]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);
}
}
正常执行如下

以下是修改过的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物件
如下图

想问问大家要怎么修正才可以正常执行
谢谢大家
作者: 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