おそらく、Event Triggerにプレハブを指定しているからだと思います。
「Rotate1」を含むオブジェクトをシーンに配置し、Event Triggerにプレハブの代わりにそれを指定することで、正しく動作するようになると思います。
もし、「Rotate1」を含むオブジェクトをプレハブから生成したい場合は、以下のようにすることで、Event Triggerに動的に追加することが出来るようになります。
C#
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4using UnityEngine.EventSystems;
5
6public class InstantiateRotate1 : MonoBehaviour
7{
8 // 生成したい「Rotate1」が含まれているプレハブを指定
9 public GameObject InstantiatePrefab;
10
11 // 処理を追加したいボタンの「EventTrigger」を指定
12 // (プレハブではなく、シーン上に配置済みのボタンを指定すること)
13 public EventTrigger ButtonEventTrigger;
14
15 void Start()
16 {
17 GameObject obj = Instantiate(InstantiatePrefab);
18 Rotate1 rotate1 = obj.GetComponent<Rotate1>();
19 EventTrigger trigger = ButtonEventTrigger.GetComponent<EventTrigger>();
20
21 EventTrigger.Entry entry1 = new EventTrigger.Entry();
22 entry1.eventID = EventTriggerType.PointerDown;
23 entry1.callback.AddListener((data) => { rotate1.PushDown(); });
24 trigger.triggers.Add(entry1);
25
26 EventTrigger.Entry entry2 = new EventTrigger.Entry();
27 entry2.eventID = EventTriggerType.PointerUp;
28 entry2.callback.AddListener((data) => { rotate1.PushUp(); });
29 trigger.triggers.Add(entry2);
30 }
31}
追記:
このスクリプトをそのまま使うのではなく、ObjectMakerに同様の処理を追加してください。
今回の場合は以下のようになるでしょう。
C#
1public class ObjectMaker : MonoBehaviour
2{
3
4 public GameObject obj;
5
6 public EventTrigger ButtonEventTrigger; //追加
7
8 void CreateObj(Vector3 atPosition)
9 {
10 GameObject newBall = Instantiate(obj, atPosition, Quaternion.identity);
11
12 // ここから追加
13
14 Rotate1 rotate1 = newBall.GetComponent<Rotate1>();
15 EventTrigger trigger = ButtonEventTrigger.GetComponent<EventTrigger>();
16
17 EventTrigger.Entry entry1 = new EventTrigger.Entry();
18 entry1.eventID = EventTriggerType.PointerDown;
19 entry1.callback.AddListener((data) => { rotate1.PushDown(); });
20 trigger.triggers.Add(entry1);
21
22 EventTrigger.Entry entry2 = new EventTrigger.Entry();
23 entry2.eventID = EventTriggerType.PointerUp;
24 entry2.callback.AddListener((data) => { rotate1.PushUp(); });
25 trigger.triggers.Add(entry2);
26
27 // ここまで追加
28 }
29
30 // 以下、省略
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/22 08:06
2017/12/22 10:03 編集
2017/12/22 10:32
2017/12/25 00:58