如何在统一测试中移动游戏对象

时间:2017-11-28 14:02:31

标签: c# unity3d

这是我的full code 以下是我的测试代码:

[UnityTest]
public IEnumerator NewPlayModeTest1WithEnumeratorPasses()
{
    // Use the Assert class to test conditions.
    // yield to skip a frame
    var c = GameObject.Find("Cube");
    c.transform.Translate(new Vector3(100, 100, 100));
    yield return new WaitForSeconds(5);
    Assert.True(true);
}

我希望在统一测试中移动gameobject,但是当我运行测试时,没有任何事情发生

enter image description here

并提出以下错误:

NullReferenceException: Object reference not set to an instance of an object
NewPlayModeTest+<NewPlayModeTest1WithEnumeratorPasses>c__Iterator0.MoveNext () (at Assets/Script/NewPlayModeTest.cs:22)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at /home/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

所以如何在统一测试中移动对象

1 个答案:

答案 0 :(得分:-4)

我发现当我运行测试脚本时,统一编辑器将创建一个新的测试场景。所以在新的场景中,我的旧场景游戏对象无法找到。

我找到了解决方案。从旧场景中,将对象拖动到文件资源管理器,它将初始化obj.prefab。然后在测试脚本中,加载此预制件进行测试。