[英]How to move gameobject in unity test
這是我的完整代碼,以下是我的測試代碼:
[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);
}
我希望在統一測試中移動游戲對象,但是當我運行測試時,什么也沒有發生
並提出以下錯誤:
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)
那么如何在統一測試中移動對象
您可以通過編寫以下內容在測試中加載場景:
[SetUp]
public void SetUp()
{
SceneManager.LoadScene("MainScene");
Debug.Log("Loaded Main Scene");
}
然后您不需要創建任何測試對象,尤其是當您使用來自 Inspector 的引用時。
我發現當我運行測試腳本時,統一編輯器將創建一個新場景進行測試。 因此,在新場景中,找不到我的舊場景游戲對象。
我想出了一個解決方案。 從舊場景中,將對象拖到文件資源管理器,它將啟動obj.prefab。 然后在測試腳本中,加載此預制件以進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.