コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】GUI.Button や GUILayout.Button で画像を表示する時に下地を非表示にする方法

概要

f:id:baba_s:20180528224810p:plain

GUI.Button や GUILayout.Button で画像を表示する時に
下地を非表示にしたい場合は、

GUI.Button( new Rect( 128, 0, 128, 128 ), m_texture, GUIStyle.none )
GUILayout.Button( m_texture, GUIStyle.none )

このように style 引数に GUIStyle.none を渡す

サンプル

using UnityEditor;
using UnityEngine;

public class Example : EditorWindow
{
    private static Texture2D m_texture;

    [MenuItem( "Tools/Example" )]
    private static void Init()
    {
        GetWindow<Example>();
        
        var path = "Assets/ball.png";
        m_texture = AssetDatabase.LoadAssetAtPath<Texture2D>( path );
    }

    private void OnGUI()
    {
        // GUI.Button
        
        // 下地あり
        var pos1 = new Rect( 0, 0, 128, 128 );
        if ( GUI.Button( pos1, m_texture ) ) { }
        
        // 下地なし
        var pos2 = new Rect( 128, 0, 128, 128 );
        if ( GUI.Button( pos2, m_texture, GUIStyle.none ) ) { }

        GUILayout.Space( 128 );

        GUILayout.BeginHorizontal();
        
        // GUILayout.Button

        // 下地あり
        if ( GUILayout.Button( m_texture ) ) { }
        
        // 下地なし
        if ( GUILayout.Button( m_texture, GUIStyle.none ) ) { }

        GUILayout.EndHorizontal();
    }
}