FC2ブログ
    02 «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.» 04

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

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

     

    【Unity】uGUIで複数オブジェクトを置いてボタンっぽいのつくってみたよ。 

    こんにちは!金髪です。
    昨日は1日外出していたため、ブログ1日ずれましたorz

    ということで、次回ポケガ2のアップデートの宣伝からです。



    はい!ということで、可愛い声が入るので、お楽しみに!

    んでは、Unityのお話。

    とっても初心なお話になります。

    こんなボタン作ろうとした時の方法。


    という画像を用意します。

    まずはボタンのオブジェクトとしてmyButtonというGameObjectを置き、その中に黄色の絵、Text、ピンクの画像を置きます。
    uGUIなのでもちろん表示する順番で並べてください。


    こんな感じですね。
    で、ButtonのオブジェクトをmyButtonに付けて、ButtonコンポーネントのTarget Graphicに、黄色のImageかピンクのImageをつければ完成。


    他にも黄色のオブジェクトにButtonコンポーネントをつけて、Textオブジェクトと、ピンクオブジェクトのRaycast Targetのチェックを外しても同じようなのが作れます。

    ただ、この方法だと、ボタンを押している時に、黄色オブジェクトまたはピンクオブジェクトの片方だけグレーアウトします。(ButtonクラスのTransitionにて押されている感じを出しているやつ)

    黄色オブジェクト、ピンクオブジェクト両方を押されている時にグレーアウトするため、こんなコードを書いてみました。

    [MyButton.cs]

    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;
    using UnityEngine.EventSystems;
    using System;

    public class MyButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {
    public UnityEngine.UI.Image[] innerImage;

    public void OnClickButton() {
    // ボタンクリックした時の処理
    }

    public void OnPointerDown(PointerEventData eventData) {
    foreach(UnityEngine.UI.Image btnImg in innerImage) {
    btnImg.color = new UnityEngine.Color(0.5f, 0.5f, 0.5f);
    }
    }

    public void OnPointerUp(PointerEventData eventData) {
    foreach(UnityEngine.UI.Image btnImg in innerImage) {
    btnImg.color = new UnityEngine.Color(1f, 1f, 1f);
    }
    }
    }

    こいつをMyButtonのオブジェクトにつけて、innerImageとして黄色とピンクのオブジェクトをアサインしておきます。

    こんな感じでやれば、ボタンの中にあるImage全部を同時に光らせたりグレーアウトができます。

    他にもいい方法あったら教えてください!

    ではアデュ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

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