簡體   English   中英

在Unity中輸入多維數據集時嘗試加載新場景

[英]Trying to load a new scene when I enter a cube in Unity

所以我有這段代碼進入一個新的場景:

using System.Collections;

using UnityEngine;
// add this line to use the SceneManagment library
using UnityEngine.SceneManagement;

public class LoadScenes : MonoBehaviour {

    [SerializeField] private string loadLevel;

    void onTriggerEnter(Collider other) {
        if (other.CompareTag ("Player")) {
            SceneManager.LoadScene (loadLevel);
        }

    }

} 

然后,我將此腳本添加到多維數據集並選擇一個觸發器。 然后我輸入我希望它也發送給我的場景,但是當我走進它時,什么也沒有發生。 我嘗試了不同的變體,但它似乎沒有用。

我正在使用的角色是一個稱為“穿西裝的男人”的統一資產,但我已將其標簽選擇為“玩家”。 任何建議都很好!

您的觸發器的處理程序將不會被調用

正如Sunimal早已指出的那樣,您需要糾正錯字。

  void OnTriggerEnter(Collider other) {
    if (other.CompareTag ("Player")) {
        SceneManager.LoadScene (loadLevel);
    }
}

確保您的場景包括在內並在“構建設置”中進行了檢查

正如您在下面的屏幕截圖中所看到的,我已經在我的構建設置中添加了SampleScene。 有兩種向場景中添加場景的方法

  1. 通過單擊“添加打開的場景”,可以將當前打開的場景添加到該列表中。
  2. 將場景從ProjectView拖放到列表中

構建設置的屏幕截圖

確保您的SceneName設置正確

在我的情況下,您的loadLevel字段需要具有“ Scenes / SampleScene”值。

 [SerializeField] private string loadLevel;

玩家需要一個對撞機

使用OnTriggerEnter方法時,Player對象需要附加某種Collider。 這可以是BoxCollider,SphereCollider或其他某些Collider。 請注意,需要選中“觸發”復選框。 否則,它將不會觸發。

編輯:感謝Eddge糾正我。 有關觸發器的更詳細說明,請參見此答案。

對撞機組件的圖像

以編程方式確保在LoadScenes組件旁邊有一個BoxCollider組件

您可以在類中添加RequireComponent屬性。 基本上可以確保您將給定類型添加為組件。 添加此腳本時,這還將自動向對象添加盒碰撞器。

[RequireComponent(typeof(BoxCollider))]
public class LoadScenes : MonoBehaviour {
/// your other code is here
}

感謝Sunimal的提示!

如果那不能解決問題怎么辦?

如果所有這些都無濟於事,請提供PlayerObject檢查器的屏幕快照。 這樣,我們可以看到哪些組件已附加到該對象以及如何對其進行“配置”

SceneManagement

要使用SceneManager加載場景,必須按照Tobias的答案確保場景位於構建設置中。

觸發器

在所有軟件開發中,案例確實很重要,這非常重要。 OnTriggerEnteronTriggerEnter ,還請注意OnTriggerEnter(Collider col)OnTriggerEnter(Collision col)

為了使用任何觸發方法,必須滿足以下三個條件:

  1. 兩個對象都必須具有對撞機。
  2. 對撞機之一必須標記為觸發器。
  3. 物體之一必須具有剛體。

觸發事件隨剛體一起發送到對象,無論對象是觸發器,在兩個對象都是觸發器的情況下,兩個都將接收它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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