2016-04-29 3 views
0

私は単純な2Dゲームを開発しています。ゲームでは、私はcharcatersのためのprefabを作成しました。プレハブランタイムのスプライトを変更しています。これはすべて正常に実行されます。今私は、特定のプレハブクローンに対してクリックイベントを適用し、プレハブの規模を増やしたいと考えています。私は今まで何をしていたのですか?特定のPrefabクローンへの参照

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

ええ、ありがとう!出来た.. –

関連する問題