我已将变量设置为 SerializeField 以从检查器中选择值。然而,这个值并没有改变,它始终是一个“真”值。我试过将其公开、更改名称、重新导入组件、重置组件……似乎没有任何效果,唯一起作用的是更改 Awake 方法中的值。public class AudioController : MonoBehaviour{ [SerializeField] private bool playSoundsAtColision; //WHY IS TRUE??? Is false in the inspector... private void OnCollisionEnter2D(Collision2D collision) { if (this.playSoundsAtColision) Debug.Log("playSoundsAtColision = " + this.playSoundsAtColision + " by: " + gameObject.name, gameObject); }}在这里你有整个代码的图像:https ://i.imgur.com/rT5BdhT.png (你可以看到变量只被声明,然后检查和打印并且没有其他任何地方可以访问它)尽管我在检查器上设置了什么,但这里会发生什么:https ://i.imgur.com/FLFugq8.png提前谢谢你的帮助!
2 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
检查是否:
您在游戏独立运行时挂起属性 - 当您退出独立运行时,属性会重置
您没有在代码中设置属性。要更改布尔值 (true) 的默认值,您需要为字段 playSoundsAtColision 设置一个值:
public class AudioController : MonoBehaviour
{
[SerializeField] public bool playSoundsAtColision = false; //you just shoud change the variable to public and default value to false or true
private void OnCollisionEnter2D(Collision2D collision)
{
if (this.playSoundsAtColision)
Debug.Log("playSoundsAtColision = " + this.playSoundsAtColision + " by: " + gameObject.name, gameObject);
}
}
慕沐林林
TA贡献2016条经验 获得超9个赞
问题是该组件存在多次。
我检查过预制件没有两个重复的组件,但预制件变体有。我还在习惯它。
正如 AresCaelum 所说,使用“DisallowMultipleComponent”属性应该有助于避免此类问题。
- 2 回答
- 0 关注
- 63 浏览
添加回答
举报
0/150
提交
取消