作者rede1420 (rede1420)
看板GameDesign
标题[请益]unity在游戏中设置红绿灯发生错误
时间Wed Nov 29 21:55:34 2017
如题
我尝试在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
想问问大家要怎麽修正才可以正常执行
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.69.177
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1511963736.A.1B6.html
1F:推 cjcat2266: void Start()不能回传值,要额外开coroutine 11/29 22:46
3F:→ cjcat2266: onds.html 11/29 22:46
4F:→ rede1420: 程式码的部分解决了,但是没办法带入light资料,如图二 11/30 01:02
5F:→ rede1420: 是因为程式码的关系吗,还是物件的关系? 11/30 01:03
6F:推 sammon: 前面加个public像是public Light Red 11/30 01:15
8F:→ rede1420: 解决问题了,谢谢你们 11/30 02:10
9F:推 cowbaying: 物件导向的观念还不够清楚 多多练习吧 11/30 08:10
10F:推 cowbaying: 另外变数范围 全域或区域的分配也很重要 11/30 08:11
11F:→ cowbaying: 因为游戏架构通常都不简单 要好好的规划变数规则 11/30 08:11
12F:推 chargo: while(true)非必要还是不要在monoBehavior里用 11/30 11:51
13F:→ chargo: 你需要的是coroutine或者Update() 11/30 11:51
14F:→ rede1420: 谢谢大家的建议与指教,这次因为完工日期有点紧迫 11/30 22:54
15F:→ rede1420: 迫不得以之下只能上来询问大家,往後会再多多练习的 11/30 22:55