【问题标题】:NullReferenceException on Public Method Unity3D公共方法 Unity3D 上的 NullReferenceException
【发布时间】:2015-07-24 18:23:38
【问题描述】:
void Update () {

    if (isSaveNeeded){
        AutoSaveData();
        isSaveNeeded = false;
    }

    string status;
    if (Social.localUser.authenticated) {
        status = "Authenticated ";

        if (isLoaded == false){
            LoadAutoSave();
            isLoaded = true;
        }
    }
    else {
        status = "Not Authenticated";
    }

    statusToPass = status + " " + mMsg;
}

public void OnSignIn() {
    if (Social.localUser.authenticated) {
        PlayGamesPlatform.Instance.SignOut();
    }
    else {
        PlayGamesPlatform.Instance.Authenticate(mAuthCallback, false);

    }
}


public void LoadData() {
    ((PlayGamesPlatform)Social.Active).SavedGame.ShowSelectSavedGameUI("Select Saved Game to Load",
                                                                       10,
                                                                       false,
                                                                       true,
                                                                       SaveGameSelectedForRead);
}

public void SaveData() {
    ((PlayGamesPlatform)Social.Active).SavedGame.ShowSelectSavedGameUI("Save Game Progress",
                                                                       10,
                                                                       true,
                                                                       false,
                                                                       SaveGameSelectedForWrite);

}

public void AutoSaveData() {
    ((PlayGamesPlatform)Social.Active).SavedGame.OpenWithAutomaticConflictResolution(autoSaveFileName,
                                                                                     DataSource.ReadCacheOrNetwork,
                                                                                     ConflictResolutionStrategy.UseLongestPlaytime,
                                                                                     SavedGameOpenedForWrite);


}

public void LoadAutoSave() {
    ((PlayGamesPlatform)Social.Active).SavedGame.OpenWithAutomaticConflictResolution(autoSaveFileName,
                                                                                     DataSource.ReadCacheOrNetwork,
                                                                                     ConflictResolutionStrategy.UseLongestPlaytime,
                                                                                     SavedGameOpenedForRead);

} 

我正在尝试在名为 AutoSaveData() 的同一脚本中调用公共方法 它给了我空引用异常。 我还在此脚本中添加了 DontDestroyOnLoad,以便游戏对象在场景之间持续存在。 我已经研究了几个小时,但无法找出原因。这对我来说可能是一个简单的错误,但由于我是编码新手,可能我无法弄清楚。 谢谢

【问题讨论】:

  • 不用看代码,需要调试代码。
  • 我的意思是我只是在尝试调试代码并尝试通过网络尝试各种解决方案。
  • NullReferenceException 不像 nullPointer,DontDestroyOnLoad 没关系,因为您的问题不在运行时,而是在编译时,如果它真的是 NullReference。可能您忘记为 AutoSaveData() 中的某个类声明命名空间,请从控制台提交完整的跟踪或跟踪它,直到找到真正的问题,因为它不能是 AutoSaveData 方法,一旦它在同一个脚本上并且不是保留字C# 或 Unity。
  • @Frohlich 我对上述脚本所做的是,当游戏结束时,我将变量 isSaveNeeded 设置为 True,这会触发 AutoSaveData() 函数。这是我开始得到 NullReferenceException 的地方。这是完整的错误:- NullReferenceException:对象引用未设置为对象的实例 AutoSave.AutoSaveData () (在 Assets/Scripts/Managers/AutoSave.cs:189) AutoSave.Update () (在 Assets/Scripts/Managers /AutoSave.cs:112) 这里 112 行是 AutoSaveData() 触发线,189 是函数 AutoSaveData() 本身来自 ((PlayGamesPlatform).......
  • 是的,对不起,我弄错了异常类型,忘记了统一的对象未设置为对象异常的实例。您的“autoSaveFileName”在哪里声明以及何时初始化/实例化它?

标签: c# android unity3d nullreferenceexception


【解决方案1】:

我通过向我的 AutoSaveData() 函数添加条件来修复它。

现在是这样的

if(Social.localuser.authenticated){ AutoSaveData(){

} }

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 2011-04-19
    • 2020-09-22
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多