You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中继承Singleton的PlayerController接入Input System时Awake冲突报错问题

问题根因

你遇到的空引用报错完全是CS0114警告对应的逻辑问题:

  • 你在PlayerController里写的Awake()方法没有加override关键字,直接隐藏了父类Singleton<PlayerController>中的Awake()逻辑,父类里给静态instance赋值的代码从头到尾都没有执行,其他脚本调用PlayerController.instance时自然就是null,触发空引用错误。
  • Unity编辑器给的绿色波浪线就是在提示这个方法隐藏的问题,忽略这个警告直接运行就会出现后续的连锁报错。

解决方案

修改PlayerController里的Awake方法写法即可,操作分两步:

  1. 把方法的修饰符从private改为public override,匹配父类Awake的访问级别
  2. 在方法第一行调用父类的Awake逻辑base.Awake();,保证单例赋值逻辑正常执行

修改后的代码示例:

private PlayerInput playerInputController;

public override void Awake()
{
    // 先执行父类单例的初始化逻辑,保证instance被正确赋值
    base.Awake();
    // 再执行当前类的Input System初始化逻辑
    playerInputController = new PlayerInput();
}

修改完成后控制台警告会自动消失,PlayerController.instance会被正确赋值,空引用报错也会同步解决。

内容的提问来源于stack exchange,提问作者Aequus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:48:00