UnityException: Find is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'boom' on game object 'fire'. See "Script Serialization" page in the Unity Manual for further details.
时间: 2024-01-21 16:05:06 浏览: 31
这个异常出现的原因是,在 MonoBehaviour 的构造函数中或实例字段初始化程序中,不允许调用 Find 方法。这是因为在构造函数或实例字段初始化程序中,游戏对象还没有完全加载并准备好,所以不能在这里调用 Find 方法。
为了解决这个问题,你可以将 Find 方法的调用移到 Awake 或 Start 方法中。这两个方法都是在游戏对象完全加载并准备好后调用的,所以可以在这里安全地调用 Find 方法。
例如,如果你的 MonoBehaviour 脚本名为 "boom",并且出现了上述异常,你可以像下面这样修改代码:
```
public class boom : MonoBehaviour
{
private GameObject fire;
private void Awake()
{
fire = GameObject.Find("fire");
}
// Start 方法中也可以调用 Find 方法
private void Start()
{
// 在这里可以安全地使用 fire 游戏对象
}
}
```
在 Awake 方法中调用 Find 方法,然后在 Start 方法中使用找到的游戏对象。这样就可以避免在 MonoBehaviour 构造函数中或实例字段初始化程序中调用 Find 方法而导致的异常。
相关问题
UnityException: Find is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'boom'. See "Script Serialization" page in the Unity Manual for further details
这个异常通常是由于在MonoBehaviour的构造函数或实例字段初始化器中调用Find方法导致的。在MonoBehaviour的构造函数或实例字段初始化器中,Unity引擎的场景层次结构尚未初始化完毕,因此不能使用Find方法。
要解决这个问题,可以将Find方法的调用移动到MonoBehaviour的Awake或Start方法中。这些方法是在场景层次结构完全初始化之后调用的,因此可以安全地调用Find方法。
例如,你可以这样修改代码:
```csharp
public class boom : MonoBehaviour
{
private GameObject player;
private void Awake()
{
player = GameObject.Find("Player");
}
//...
}
```
这样就可以避免在构造函数或实例字段初始化器中调用Find方法导致的异常。
The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page
这个错误是由于浏览器对自动播放音频的限制所导致的。为了避免自动播放音频对用户造成不必要的干扰,现代浏览器通常会禁止自动播放音频,除非用户在页面上进行了手势操作。
要解决这个问题,你需要在用户与页面进行交互后再开始播放音频。你可以在用户点击一个按钮或其他交互元素时触发音频播放,或者在用户滚动页面时开始播放音频。另外,你还可以使用 Web Audio API 中的 `resume()` 方法来恢复 AudioContext。例如:
```
window.addEventListener('click', function() {
var context = new AudioContext();
context.resume().then(function() {
// 在这里开始播放音频
});
});
```
这样,当用户点击页面时,就会创建一个新的 AudioContext 并恢复它,然后你就可以开始播放音频了。