私は単純な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;
}
を増やすように、独自の機能を処理する責任があり、このようにスクリプトを添付して、あなたのオブジェクトのコライダーを作成'CharacterClicked'? –
参照してください、私はスクリプト自体からリスナーを実装しています。 LoadCharacter()からforeachループから呼び出されます。 –