C# Playerprefs的问题
我在我的每个关卡中都隐藏了一个“数据包”,系统会记住每一关卡上是否有神器被拿走,如果是这样的话,当玩家重放神器时,它会禁用神器,但我也想记录下被拿走的总量,系统几乎可以正常工作。只有一个小问题: 当我使用第一个数据包完成该级别时,在菜单中显示:1,这是正确的。 但是当我用第二个表示3,第三个表示4,第四个表示5等等 我不明白为什么,因此无法修复它 代码如下:C# Playerprefs的问题,c#,unity3d,C#,Unity3d,我在我的每个关卡中都隐藏了一个“数据包”,系统会记住每一关卡上是否有神器被拿走,如果是这样的话,当玩家重放神器时,它会禁用神器,但我也想记录下被拿走的总量,系统几乎可以正常工作。只有一个小问题: 当我使用第一个数据包完成该级别时,在菜单中显示:1,这是正确的。 但是当我用第二个表示3,第三个表示4,第四个表示5等等 我不明白为什么,因此无法修复它 代码如下: function OnTriggerEnter(other : Collider) { if(other.CompareTag("
function OnTriggerEnter(other : Collider) {
if(other.CompareTag("DataPacket")){
pickedUpDataPacket = 1;
Destroy(other.gameObject);
gameObject.Find("DatapackFound").guiText.enabled = true;
yield WaitForSeconds (1.5);
gameObject.Find("DatapackFound").guiText.enabled = false;
}
if(other.CompareTag("Finish") && pickedUpDataPacket == 1){
PlayerPrefs.SetInt("DataPackLevel" + levelindex.ToString(), 1);
//if(!PlayerPrefs.HasKey("totalDatapacks")){
//PlayerPrefs.SetInt("totalDatapacks", 1);
//} else {
PlayerPrefs.SetInt("totalDatapacks", (PlayerPrefs.GetInt("totalDatapacks")+1));
}
}
//}
我已经评论了一部分,我相信这也是问题的一部分
第二个剧本的一部分:
if(datapacktotal){
if(PlayerPrefs.GetInt("totalDatapacks") > 0){
findText.text = "Collected:" + PlayerPrefs.GetInt ("totalDatapacks");
}
提前感谢:)从所描述的行为来看,在某些情况下,在数据包被销毁之前,碰撞会被触发多次。与第2级一样,计数器从1传递到3 我的想法是,您的碰撞器有多个接触点,因此,如果您接触其中的n个,碰撞将被触发n次 我会尝试一个简单的实验,只是用一面旗帜来确定这是否是你第一次“触摸”对撞机;然后,在这种情况下,您将更新PlayerPref:
function OnTriggerEnter (other : Colliderstrong text){
if (collisionAlreadyConsidered) return;
collisionAlreadyConsidered = true;
// your code here...
}
function Update(){
collisionAlreadyConsidered = false;
}
,其中CollisionAlreadyConsided是一个全局变量