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. boom..ctor (
时间: 2024-01-21 09:02:50 浏览: 80
这个异常是由于在脚本的构造函数或实例字段初始化器中调用了Find方法,而不是在Awake或Start方法中调用。这个问题可以通过将Find方法的调用移动到Awake或Start方法中来解决。
例如,你可以这样修改代码:
```csharp
public class boom : MonoBehaviour
{
private GameObject player;
private void Awake()
{
player = GameObject.Find("Player");
}
//...
}
```
这样就可以避免在构造函数或实例字段初始化器中调用Find方法导致的异常。同时,还可以参考Unity手册中的“Script Serialization”页面了解更多相关信息。
相关问题
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 并恢复它,然后你就可以开始播放音频了。