所以我有这段代码进入一个新的场景:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我将此脚本添加到多维数据集并选择一个触发器。然后我输入我希望它也发送给我的场景,但是当我走进它时,什么也没有发生。我尝试了不同的变体,但它似乎没有用。
我正在使用的角色是一个称为“穿西装的男人”的统一资产,但我已将其标签选择为“玩家”。任何建议都很好!
正如Sunimal早已指出的那样,您需要纠正错字。
void OnTriggerEnter(Collider other) {
if (other.CompareTag ("Player")) {
SceneManager.LoadScene (loadLevel);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在下面的屏幕截图中所看到的,我已经在我的构建设置中添加了SampleScene。有两种向场景中添加场景的方法
在我的情况下,您的loadLevel字段需要具有“ Scenes / SampleScene”值。
[SerializeField] private string loadLevel;
Run Code Online (Sandbox Code Playgroud)
使用OnTriggerEnter方法时,Player对象需要附加某种Collider。这可以是BoxCollider,SphereCollider或其他某些Collider。请注意,需要选中“触发”复选框。否则,它将不会触发。
编辑:感谢Eddge纠正我。有关触发器的更详细说明,请参见此答案。
您可以在类中添加RequireComponent属性。基本上可以确保您将给定类型添加为组件。添加此脚本时,这还将自动向对象添加盒碰撞器。
[RequireComponent(typeof(BoxCollider))]
public class LoadScenes : MonoBehaviour {
/// your other code is here
}
Run Code Online (Sandbox Code Playgroud)
感谢Sunimal的提示!
如果所有这些都无济于事,请提供PlayerObject检查器的屏幕快照。这样,我们可以看到哪些组件已附加到该对象以及如何对其进行“配置”
| 归档时间: |
|
| 查看次数: |
1651 次 |
| 最近记录: |