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