[英]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。 有兩種向場景中添加場景的方法
在我的情況下,您的loadLevel字段需要具有“ Scenes / SampleScene”值。
[SerializeField] private string loadLevel;
使用OnTriggerEnter方法時,Player對象需要附加某種Collider。 這可以是BoxCollider,SphereCollider或其他某些Collider。
請注意,需要選中“觸發”復選框。
否則,它將不會觸發。
編輯:感謝Eddge糾正我。 有關觸發器的更詳細說明,請參見此答案。
您可以在類中添加RequireComponent屬性。 基本上可以確保您將給定類型添加為組件。 添加此腳本時,這還將自動向對象添加盒碰撞器。
[RequireComponent(typeof(BoxCollider))]
public class LoadScenes : MonoBehaviour {
/// your other code is here
}
感謝Sunimal的提示!
如果所有這些都無濟於事,請提供PlayerObject檢查器的屏幕快照。 這樣,我們可以看到哪些組件已附加到該對象以及如何對其進行“配置”
要使用SceneManager加載場景,必須按照Tobias的答案確保場景位於構建設置中。
在所有軟件開發中,案例確實很重要,這非常重要。 OnTriggerEnter
與onTriggerEnter
,還請注意OnTriggerEnter(Collider col)
與OnTriggerEnter(Collision col)
為了使用任何觸發方法,必須滿足以下三個條件:
觸發事件隨剛體一起發送到對象,無論對象是觸發器,在兩個對象都是觸發器的情況下,兩個都將接收它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.