簡體   English   中英

如何在統一測試中移動游戲對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM