所以我有这段代码进入一个新的场景:
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);
}
}
}
然后我将此脚本添加到多维数据集并选择它作为触发器。然后我输入我希望它发送给我的场景,但是当我走进它时,根本没有任何事情发生。我尝试了不同的变化,但它似乎没有用。
我使用的角色是一个名为man in a suit的统一资产,但我选择了它的标签为“玩家”。任何建议都会很棒!
答案 0 :(得分:4)
正如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。 注意" Is Trigger"需要选中复选框。否则它不会成为触发器。
修改:感谢Eddge纠正我。有关触发器的更深入说明,请参阅this答案。
您可以在班级中添加RequireComponent属性。它基本上确保您将给定类型添加为组件。当您添加此脚本时,这也会自动为对象添加一个盒子对撞机。
[RequireComponent(typeof(BoxCollider))]
public class LoadScenes : MonoBehaviour {
/// your other code is here
}
感谢Sunimal提示!
如果这一切都没有帮助,请提供您的Playerobject检查员的屏幕截图。通过这种方式,我们可以看到哪些组件附加到该对象以及它们如何配置"
答案 1 :(得分:1)
要使用SceneManager加载场景,必须根据Tobias的答案确保场景处于构建设置中。
在所有软件开发案例中都很重要,这非常重要。 OnTriggerEnter
与onTriggerEnter
不同,注意OnTriggerEnter(Collider col)
与OnTriggerEnter(Collision col)
为了使用任何触发方法,有三件事是必须的:
触发事件被发送到具有刚体的对象,并且任何对象都是触发器,在两个对象都是触发器的情况下都将接收它。