首先,这里的代码:复读功能(unity3d/C#)所有的
using UnityEngine;
using System.Collections;
namespace UltimateSurvival
{
public class Radiation : MonoBehaviour
{
public GameObject radiationEffect;
public EntityVitals Vitals { get { return m_Vitals; } }
private EntityVitals m_Vitals;
// Use this for initialization
void Start() {
InvokeRepeating ("OnTriggerEnter", 1.5f, 3.5f);
}
// Update is called once per frame
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
radiationEffect.SetActive(true);
//yield return new WaitForSeconds(5);
var entity = other.GetComponent<EntityEventHandler>();
if(entity)
{
var healthEventData = new HealthEventData(-Random.Range(7.0f, 23.0f));
entity.ChangeHealth.Try(healthEventData);
}
//yield return new WaitForSeconds(5);
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "Player")
{
radiationEffect.SetActive(false);
}
}
}
}
我想要做的是,我想这个脚本来执行OnTriggerEnter每3.5秒。正如你所看到的,我使用InvokeRepeating,但它似乎不起作用。我也试过更改void OnTriggerEnter on IENumerator OntriggerEnter然后返回新的返回WaitForSeconds(5); - 它也没有工作。我很困惑D:请帮忙!
OnTriggerEnter似乎不是你的代码上的IENumerator。看看http://answers.unity3d.com/questions/350721/c-yield-waitforseconds.html – iamIcarus
@iamIcarus阅读我说的脚本后。我也试着改变IENumerator OntriggerEnter上的void OnTriggerEnter,然后返回新的WaitForSeconds(5); - 它也没有工作。 – papi
Unity消息(开始,更新,OnTriggerEnter,OnDestroy,....)不应该手动调用**。这些消息由Unity本身调用。在你的情况下,由于你不知道什么时候刚体会进入你的触发器,所以它**没有意义。 – Hellium