所以在我们使用ink/inkle API for unity的视觉小说游戏中,我试图实现一个保存和加载系统,但是我目前在以我想要的方式加载保存的状态时遇到了麻烦。
根据API文档,要在游戏中保存故事的状态,可以调用:
string savedJson = _inkStory.state.ToJson();
然后加载:
_inkStory.state.LoadJson(savedJson);
下面是我如何使用PlayerPrefs保存故事的当前状态,它工作得很好。
public void saveGame()
{
DialogueSystem dialogueSystem = GetComponent<DialogueSystem>();
dialogueSystem.savedJson = dialogueSystem.dialogue.state.ToJson();
PlayerPrefs.SetString("saveState", dialogueSystem.savedJson);
Debug.Log(dialogueSystem.savedJson);
}
下面是我如何尝试在Start()上加载保存的状态,它不会加载保存的状态。
private void Start()
{
dialogue = new Story(dialogueJSON.text);
currentActiveBG = BGs[0];
historyScript = GetComponent<History>();
counterScript = GetComponent<counter>();
if (PlayerPrefs.HasKey("saveState")) { // for loading the saved state
dialogue = new Story(dialogueJSON.text);
savedJson = PlayerPrefs.GetString("saveState");
dialogue.state.LoadJson(savedJson);
loadLine(); //this function contains story.Continue, which loads the next line
Debug.Log(savedJson);
}
else {
loadGame("Pre_Prep1"); // default starting line
}
}
我怎样才能使这个工作?有没有更好的方法来实现这个保存/加载特性?
1条答案
按热度按时间9udxz4iz1#
我不知道你要做哪个游戏,但是,我在我的项目中使用了下面的保存系统,它工作得很好,你也可以使用它。
}