Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用';IEnumerator';一旦对象移动到摄像机外,立即重新定位对象';(s视野)_C#_Unity3d_Ienumerator - Fatal编程技术网

C# 使用';IEnumerator';一旦对象移动到摄像机外,立即重新定位对象';(s视野)

C# 使用';IEnumerator';一旦对象移动到摄像机外,立即重新定位对象';(s视野),c#,unity3d,ienumerator,C#,Unity3d,Ienumerator,一旦游戏对象离开摄像机的视野,此代码应重新定位游戏对象。然而,游戏对象永远不会被重新定位 IEnumerator Reposition(NinjaStar ninjaStar) { bool onScreen = true; Renderer renderer = ninjaStar.gameObject.GetComponent<Renderer> (); yield return new WaitForSeconds (1); while (o

一旦游戏对象离开摄像机的视野,此代码应重新定位游戏对象。然而,
游戏对象
永远不会被重新定位

IEnumerator Reposition(NinjaStar ninjaStar) {
    bool onScreen = true;
    Renderer renderer = ninjaStar.gameObject.GetComponent<Renderer> ();

    yield return new WaitForSeconds (1);

    while (onScreen) {
        if (!renderer.isVisible) {
            ninjaStar.Initiate (0, 0, Vector3.zero); //this code never gets called
            ninjaStar.transform.position = poolPosition; //this code never gets called
            onScreen = false; //this code never gets called
        }
        yield return null;
    }
}
IEnumerator重新定位(忍者星忍者星){
屏幕上的布尔=真;
渲染器Renderer=ninjaStar.gameObject.GetComponent();
返回新的WaitForSeconds(1);
while(屏幕上){
如果(!renderer.isVisible){
Initiate(0,0,Vector3.zero);//此代码从未被调用
ninjaStar.transform.position=poolPosition;//此代码从未被调用
onScreen=false;//此代码永远不会被调用
}
收益返回空;
}
}
文档说明:

在编辑器中运行时,场景视图摄影机也会使该值为真

因此,请尝试将您的项目构建到您首选的平台并在那里进行测试(例如构建windows并测试.exe)


或者,重新定位/旋转场景视图摄影机,使其看不到对象,并在编辑器中进行测试。

非常感谢您锁定了它,但我认为unity会让iVisible以这种方式工作,这很奇怪……非常完美,很乐意提供帮助。那么你应该接受答案;)有时,如果你不看医生,你可能会遇到问题。