使用LootLocker SDK实现全球排行榜时Unity报空引用错误求助
解决Unity中LootLocker排行榜的空引用错误
你遇到的NullReferenceException错误出现在gameManager.cs第62行,也就是调用leaderboard.SubmitScoreRoutine的位置,核心原因是gameManager类中的leaderboard变量未被初始化,处于空引用状态。
修复方案
方法一:通过代码自动获取组件引用
在gameManager的Awake方法中添加对leaderboard组件的查找逻辑,确保变量被正确赋值:
private void Awake() { playerManager = FindObjectOfType<playerManager>(); leaderboard = FindObjectOfType<leaderboard>(); // 新增该行 }
注意:需确保当前场景中存在挂载了leaderboard脚本的GameObject,否则FindObjectOfType会返回null。
方法二:通过Inspector面板手动赋值
将gameManager中的leaderboard字段改为public:
public leaderboard leaderboard;
然后在Unity编辑器中,选中挂载gameManager的GameObject,在Inspector面板里将挂载了leaderboard脚本的对象拖拽到对应的字段上。
额外优化建议
为避免后续潜在的空引用问题,建议在使用变量前添加空值检查:
public IEnumerator restartGame() { Time.timeScale = 0f; yield return new WaitForSecondsRealtime(1f); if(leaderboard != null && playerManager != null) { yield return leaderboard.SubmitScoreRoutine(playerManager.highscore); } else { Debug.LogError("leaderboard或playerManager未初始化"); } SceneManager.LoadScene(0); }
内容的提问来源于stack exchange,提问作者Leonardo Biagi
相关产品推荐
相关产品推荐

