我是 Unity 的初学者,有一个问题我无法在任何板上找到答案。Awake()创建一个非常基本的 Unity C# 脚本,我的函数中有以下代码行:
Assert.IsNotNull(sfxJump);
Assert.IsNotNull(sfxDeath);
Assert.IsNotNull(sfxCoin);
Run Code Online (Sandbox Code Playgroud)
第三个断言 "
Assert.IsNotNull(sfxCoin)抛出 as null,即使硬币AudioClip设置在检查器中:
检查器脚本值:

然而 - 这是让我感到困惑的部分 - 由于某种原因,当从例程中在同一脚本中调用时,情况sfxCoin并非如此 nullOnCollisionEnter()
因此,Unity 似乎最终确实使用代码注册了该对象,但初始Awake()、Start()和Update()方法的断言失败了。
而这只发生在sfxCoin. sfxJump并且sfxDeath没有这个问题。
任何帮助,将不胜感激
整个脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Assertions;
public class Player : MonoBehaviour
{
[SerializeField] private float jumpForce = 100f;
[SerializeField] private float forwardMomentum = 5f;
[SerializeField] private AudioClip sfxJump;
[SerializeField] private …Run Code Online (Sandbox Code Playgroud)