我正在构建一个针对Windows Store 8.1的Unity游戏,我需要在隔离存储中保存游戏进度。但是使用'等待'访问本地存储的操作员给我这个错误
'await' requires that the type 'Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile>' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?
有没有办法可以使用&#39;等待&#39;运营商莫名其妙?
我想如果我在将项目导出到Windows 8.1后生成的解决方案中实现我的Save方法,那么它可以正常工作。麻烦的是我不确定如何在主解决方案中访问统一脚本的变量和方法(保存游戏所需)。
任何人都可以帮助这些方法,或者有更好的方法吗?
编辑: 这是我正在使用的代码:
public async void save_game()
{
StorageFile destiFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("Merged.png", CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream stream = await destiFile.OpenAsync(FileAccessMode.ReadWrite))
{
//you can manipulate this stream object here
}
}
答案 0 :(得分:1)
Unity的Mono / .NET版本不支持async / await,这就是您收到第一个错误的原因。
其他人已经想出如何“欺骗”Unity让你间接调用异步函数。 UnityAnswers
列出了一种此类方法答案 1 :(得分:1)
是否有必要使用隔离存储。保存游戏的最简单方法是使用playerprefs。它适用于任何平台。
答案 2 :(得分:0)
你可以使用这样的东西。
// this is for loading
BinaryFormatter binFormatter = new BinaryFormatter();
string filename = Application.persistentDataPath + "/savedgame.dat";
FileStream file = File.Open(filename, FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
GameData data = (GameData)binFormatter.Deserialize(file) ;
file.Close();
其中GameData类是[Serializable]。在对其进行反序列化后,可以将其成员加载到游戏变量中。
//And this is for saving
BinaryFormatter binFormatter = new BinaryFormatter();
string filename = Application.persistentDataPath + "/savedgame.dat";
FileStream file = new FileStream(filename, FileMode.Create,FileAccess.Write,FileShare.ReadWrite);
GameData data = new GameData();
//这里将是data.health = player.health file.Close();