2016-04-29 63 views
0

我正在開發一個簡單的2D遊戲。在遊戲中,我創建了一個charcaters預製。我正在改變預製運行時的精靈。這一切都執行得很好。現在我想在特定的預製克隆上應用點擊事件並希望增加預製的比例。我附加了一個c#腳本,我到目前爲止所做的一切。參考特定的預製克隆

public class ShoppingManager : MonoBehaviour { 

public static ShoppingManager instance; 

[System.Serializable] 
public class Shopping 
{ 
    public string CharacterName; 
    public Sprite CharacterSprite; 
} 

public GameObject CharacterPrefab; 
public Transform CharacterSpacer; 

public List<Shopping> ShoppingList; 

private CharacterScript NewCharacterScript; 

/*********************************************Awake()******************************************/ 
void Awake() 
{ 
    MakeSingleton(); 
} 

/******************************Create object of the script**********************************/ 
void MakeSingleton() 
{ 
    instance = this; 
    DontDestroyOnLoad (gameObject); 
} 

// Use this for initialization 
void Start() { 
    LoadCharacters(); 
} 

void LoadCharacters() 
{ 
    foreach (var characters in ShoppingList) { 
     GameObject NewCharacter = Instantiate (CharacterPrefab) as GameObject; 

     NewCharacterScript = NewCharacter.GetComponent<CharacterScript>(); 
     NewCharacterScript.CharacterName = characters.CharacterName; 
     NewCharacterScript.Charcater.GetComponent<Image>().sprite = characters.CharacterSprite; 

     NewCharacterScript.GetComponent<Button>().onClick.AddListener (() => CharacterClicked (NewCharacterScript.CharacterName, NewCharacterScript.Charcater)); 

     NewCharacter.transform.SetParent (CharacterSpacer, false); 
    } 
} 

void CharacterClicked(string CharacterName, GameObject Char) 
{ 
    StartCoroutine (IncreaseScale (Char)); 
} 

IEnumerator IncreaseScale(GameObject TempCharacter) 
{ 
    int i = 5; 
    while (i > 0) { 
     yield return new WaitForSeconds (0.1f); 

     Vector3 TempVector = TempCharacter.GetComponent<RectTransform>().localScale; 
     TempVector.x = TempVector.x + 0.2f; 
     TempVector.y = TempVector.y + 0.2f; 
     TempCharacter.GetComponent<RectTransform>().localScale = TempVector; 

     i--; 
    } 
} 

}

此代碼觸發點擊事件並且還增加了規模,但最後的克隆,而不是點擊預製克隆。我想念的是什麼,我無法理解。我應該糾正什麼。是的!我還附加了我在預製中添加的腳本的代碼。

public class CharacterScript : MonoBehaviour { 

public string CharacterName; 
public GameObject Charcater; 

}

+0

,你打電話'CharacterClicked'? –

+0

請參閱我正在從腳本本身實現偵聽器。它從LoadCharacter()的foreach循環中調用。 –

回答

0

創建撞機爲對象連接下面的腳本,以這種方式每個對象是負責處理自己的功能像增加自己的大小

public class characterFunctionalities: MonoBehaviour{ 
    void OnMouseDown() 
    { 
     StartCoroutine (IncreaseScale (this.gameobject)); 
    } 

    IEnumerator IncreaseScale(GameObject TempCharacter) 
    { 
     int i = 5; 
     while (i > 0) { 
      yield return new WaitForSeconds (0.1f); 

      Vector3 TempVector = TempCharacter.GetComponent<RectTransform>().localScale; 
      TempVector.x = TempVector.x + 0.2f; 
      TempVector.y = TempVector.y + 0.2f; 
      TempCharacter.GetComponent<RectTransform>().localScale = TempVector; 

      i--; 
     } 
    } 
    } 
+0

是的..謝謝!有效.. –