発生している問題
表題通りです、スクリプトからオブジェクトにEventTriggerをAddComponentし、付与したEventTriggerにAddListenerでメソッドを登録したいのですが、できません。
確認したこととしては、処理は最後まで通っており、EventTypeの指定はできていますが、実行内容は登録されていませんでした。
EventSystemがScene上に存在していることも確認済みです、新規プロジェクトでもためしましたが、登録できなかった為プロジェクト固有の問題という訳でもないようです。エラーメッセージは発生していません。
Editor上でEventTriggerをAddし、手動でメソッドは指定できたので、メソッドにアクセスできていないわけではないようです。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.EventSystems; 5using UnityEngine.UI; 6 7public class TapIconToChangePanel : GetParentChilds 8{ 9 public GameObject[] Parents; 10 11 private string oldSelectIcon = default; 12 13 public override void GetChild() 14 { 15 Parent = Parents; 16 base.GetChild(); 17 } 18 19 void Awake() 20 { 21 GetChild(); 22 23 24 for(int x = 0; x < Panels.Count; x++) 25 { 26 for(int i = 0; i < Panels[x].Count; i++) 27 { 28 if(x == 0) 29 { 30 Panels[x][i].GetComponent<Image>().color = new Color(1, 1, 1, 0.4f); 31 32 EventTrigger currentTrigger = Panels[x][i].AddComponent<EventTrigger>(); 33 34 EventTrigger.Entry entry = new EventTrigger.Entry(); 35 entry.eventID = EventTriggerType.PointerDown; 36 entry.callback.AddListener( (date) => { CloseAndOpenPanel();} ); //ラムダ式の右側は追加するメソッドです。 37 currentTrigger.triggers.Add(entry); 38 } 39 40 if(x == 1) 41 Panels[x][i].SetActive(false); 42 } 43 } 44 Panels[0][1].GetComponent<Image>().color = new Color(1, 1, 1, 1); 45 Panels[0][1].SetActive(true); 46 } 47 48 void Update() 49 { 50 51 } 52 53 public void CloseAndOpenPanel() 54 { 55 if(oldSelectIcon == this.gameObject.name) 56 return; 57 58 oldSelectIcon = this.gameObject.name; 59 60 for(int x = 0; x < Panels.Count; x++) 61 { 62 for(int i = 0; i < Panels[x].Count; i++) 63 { 64 if(x == 0) 65 Panels[x][i].GetComponent<Image>().color = new Color(1, 1, 1, 0.4f); 66 67 if(x == 1) 68 { 69 if(Panels[x][i].name == oldSelectIcon) 70 Panels[x][i].SetActive(true); 71 else 72 Panels[x][i].SetActive(false); 73 74 } 75 } 76 } 77 this.gameObject.GetComponent<Image>().color = new Color(1, 1, 1, 1); 78 } 79} 80
”登録できない”というのは、”メソッドが呼ばれない”とはまた別でしょうか。
以下参考URLの対応(リンク先の①の対応)で改善されたりしないでしょうか。
※改善されなかったり、求めていることではなかったらスルーして頂いて大丈夫です。
https://learning-collection.com/unity3d%E3%80%80eventtrigger%E3%81%8C%E5%8F%8D%E5%BF%9C%E3%81%97%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/
回答2件
あなたの回答
tips
プレビュー