FC2ブログ
    04 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 06

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】UnityのEventTrigger処理呼び出しをコードで書く方法。 

    こんにちは。坂内っす。

    パラリンピックが明日から開催のようですね。
    そういえば見たことなかったですね・・・まぁオリンピックもほぼ見ないんですけどね・・・

    さて、ポケガ3の進捗ですが、難産に難産を重ねて難産中です。

    可愛い女の子育てたいですよね?
    ってことで、キャラデザのイラストレーターさんが現在4人目。
    そしてシナリオライターさんもなんと3人目!

    完成するのでしょうか??
    完成させますけどね!
    現状ですと、リリース予定は来年の4月ころ?
    おかしいなぁ~ 今年の4月ころにはリリースしようとしてたんだけどねぇ・・

    なにはともあれリリースまで頑張っていくしかありませんね。

    2020年の8月からまともな収入がない現状、いつ死ぬかわかりませんが・・・


    さて、UnityのuGUIでボタンがありますが、ボタンが"押される"という処理は"ボタンを押す+ボタンを離す"これでワンセットになってますよね。
    "押したけど離さない"だと、ボタンのOnClickが呼ばれません。

    "押した瞬間に処理"をさせたい場合はEventTriggerを使ったりします。

    [EventTrigger]についてはリファレンスをどうぞ
    https://docs.unity3d.com/ja/2018.4/ScriptReference/EventSystems.EventTrigger.html

    EventTriggerを使えば、ドラッグアンドドロップの処理なんかもできますね。

    今回はEventTriggerのPointerEnterの処理をコード側で呼ぶ方法のメモ。

    ボタンの場合はこんな感じで処理を呼べます。

    [Blog20210823.cs]

    using UnityEngine;
    using UnityEngine.UI;

    public class Blog20210823 : MonoBehaviour
    {
    [SerializeField] Button btnA;

    private void Start() {
    btnA.onClick.AddListener(OnClickA);
    }

    void OnClickA() {
    // 処理
    }
    }



    onClick.AddListenerでメソッドを呼ぶことができました。

    しかしEventTriggerの場合は同じことをしようとすると、こんな感じになります。



    OnPointerEnterにはAddListenerがありません。

    ということで、こんな感じで書くことができます。

    [Blog20210823.cs]

    using UnityEngine;
    using UnityEngine.EventSystems;

    public class Blog20210823 : MonoBehaviour
    {
    [SerializeField] EventTrigger evtA;

    private void Start() {
    EventTrigger.Entry pDown = new EventTrigger.Entry();
    pDown.eventID = EventTriggerType.PointerDown;
    pDown.callback.AddListener((data) => OnClickA());
    evtA.triggers.Add(pDown);
    }

    void OnClickA() {
    // 処理
    }
    }



    ボタンと比べるとちょっとめんどいけど、コードで書くと追いやすくていいですよね!
    Inspectorで処理をアサインするのもいいけど、うちではコードで書くのが流行ってます。

    ということで、EventTriggerの処理呼び出しをコードでやる方法でした!もちろんPointerEnterとかも使えますよ!

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/819-c029c99c
    この記事にトラックバックする(FC2ブログユーザー)