2011-06-24 44 views
0

正如名稱所示,我希望對於數組中的每個特定名稱都將值添加到int。對於數組中的每個字符串

例如:如果在數組中有3個相同名稱的字符串,則將3次50的值添加到該值中。

這是我的劇本我現在有:

var lootList = new Array(); 
var interaction : Texture; 
var interact = false; 
var position : Rect; 
var ching : AudioClip; 
var lootPrice = 0; 

function Update() 
{ 
    print(lootList); 

    if ("chalice" in lootList){ 
     lootPrice += 50; 
    } 
} 

function Start() 
{ 
    position = Rect((Screen.width - interaction.width) /2, (Screen.height - interaction.height) /2, interaction.width, interaction.height); 
} 

function OnTriggerStay(col : Collider) 
{ 
    if(col.gameObject.tag == "loot") 
    { 
     interact = true; 

     if(Input.GetKeyDown("e")) 
     { 
      if(col.gameObject.name == "chalice") 
      { 
       Destroy(col.gameObject); 
       print("chaliceObtained"); 
       audio.clip = ching; 
       audio.pitch = Random.Range(0.8,1.2); 
       audio.Play(); 
       interact = false; 
       lootList.Add("chalice"); 
      } 

      if(col.gameObject.name == "moneyPouch") 
      { 
       Destroy(col.gameObject); 
       print("moneyPouchObtained"); 
       audio.clip = ching; 
       audio.pitch = Random.Range(0.8,1.2); 
       audio.Play(); 
       interact = false; 
       lootList.Add("moneyPouch"); 
      } 

      if(col.gameObject.name == "ring") 
      { 
       Destroy(col.gameObject); 
       print("ringObtained"); 
       audio.clip = ching; 
       audio.pitch = Random.Range(0.8,1.2); 
       audio.Play(); 
       interact = false; 
       lootList.Add("ring"); 
      } 

      if(col.gameObject.name == "goldCoins") 
      { 
       Destroy(col.gameObject); 
       print("coldCoinsObtained"); 
       audio.clip = ching; 
       audio.pitch = Random.Range(0.8,1.2); 
       audio.Play(); 
       interact = false; 
       lootList.Add("goldCoins"); 
      } 

      if(col.gameObject.name == "plate") 
      { 
       Destroy(col.gameObject); 
       print("plateObtained"); 
       audio.clip = ching; 
       audio.pitch = Random.Range(0.8,1.2); 
       audio.Play(); 
       interact = false; 
       lootList.Add("plate"); 
      } 
     } 
    } 
} 

function OnTriggerExit(col : Collider) 
{ 
    if(col.gameObject.tag == "pouch") 
    { 
     interact = false; 
    } 
} 

function OnGUI() 
{ 
    if(interact == true) 
    { 
     GUI.DrawTexture(position, interaction); 
     GUI.color.a = 1; 
    } 
} 

這是一個遊戲,我讓您可以偷盜額外的得分點項目。

我試過使用for(i = 0; i < variable.Length; i++)但似乎沒有工作。

我現在唯一能想到的就是使用布爾值來添加一次。但這不是記憶友好的。

幫助表示感謝,並提前致謝!

+1

,環路應該在哪裏呢?我們不知道你的腳本應該如何工作。這個問題所需的所有代碼是什麼? –

回答

1

你可以使用標準的.forEach(callback)方法:

lootList.forEach(function(value, index, array) 
{ 
    if (value === "chalice") { lootPrice += 50; } 
}); 

如果你沒有這樣的方法,你可以這樣實現它:

if (!Array.prototype.forEach) { 
    Array.prototype.forEach = function (callback) { 
     for(var i = 0; i < this.length; i++) { callback(this[i], i, this); } 
    } 
} 
相關問題