【发布时间】:2019-05-11 19:59:39
【问题描述】:
所以我正在为我的蛇游戏使用定制器,并且我正在使用 PlayerPrefs 来保存蛇的偏好外观。现在,每次我测试运行游戏时,playerprefs 中保存的字符串都不会加载,它只是空的。
我已经尝试在 Start()、Awake() 和 Update() 方法中获取字符串数据,但它们都没有加载数据。我还在保存数据的每一行中添加了 PlayerPrefs.Save()。
这是我将所有网格更新为与保存的字符串相同的代码。我已经把它放在了更新方法中。
lesnek = GameObject.FindGameObjectsWithTag("LeWorm");
objName = PlayerPrefs.GetString("meshName");
if (PlayerPrefs.HasKey("meshName"))
{
if (objName == PlayerPrefs.GetString("meshName"))
{
leMesh = Resources.Load<GameObject>(@"Models\" + objName);
}
else
{
objName = PlayerPrefs.GetString("meshName");
leMesh = Resources.Load<GameObject>(@"Models\" + objName);
}
}
if (objName != null || objName != "")
{
objName = "Sphere";
leMesh = Resources.Load<GameObject>(@"Models\" + objName);
}
foreach (GameObject change in lesnek)
{
if (objName != null || objName != "")
{
if (change.GetComponent<MeshFilter>() == null)
{
change.AddComponent<MeshFilter>();
change.GetComponent<MeshFilter>().mesh = leMesh.GetComponent<MeshFilter>().sharedMesh;
PlayerPrefs.SetString("meshName", objName);
PlayerPrefs.Save();
}
else
{
change.GetComponent<MeshFilter>().mesh = leMesh.GetComponent<MeshFilter>().sharedMesh;
PlayerPrefs.SetString("meshName", objName);
PlayerPrefs.Save();
}
}
}
每次运行此代码时,我都会收到错误消息,并且不会在 playerprefs 中加载或保存字符串。
【问题讨论】:
-
如果您遇到错误,请向我们提供错误消息。
-
因此,如果我删除此 if (objName != null || objName != "") 语句,我会收到以下错误消息:UnassignedReferenceException:ChangerPasserScript 的变量 leMesh 尚未分配。您可能需要在检查器中分配 ChangerPasserScript 脚本的 leMesh 变量。 UnityEngine.GameObject.GetComponent[MeshFilter] () (在 C:/buildslave/unity/build/Runtime/Export/GameObject.bindings.cs:28) ChangerPasserScript.Update () (在 Assets/Scripts/ChangerPasserScript.cs:52)
-
好吧,resource.load 是正确的,我试图通过在控制台中打印来获取字符串,但它什么也没打印