目次
はじめに
たっつー
こんにちは、のんびりエンジニアのたっつーです。
Twitter(@kingyo222)で Unity情報 を発信しているのでよければフォローしてください!
今回は「いくつかサンプル書いたよ」の記事の1つの共通コントロールの作成方法と使い方を解説したいと思います。
ぜひ、お付き合いいただければと思います(#^^#)
UI Elementsとは?
こちらの記事をご参照いただければと思います。
- Unity:UI Elements でいくつかサンプル書いたよ!
- Unity:UI Elements で共通コントロールを作成する
- Unity:UI Elements でツールバーを実装する
- Unity:UI Elements でマウスのクリックイベントを取得する
- Unity:UI Elements でパラパラ漫画風のGUIを作ってみる。
ツールバーの実装
さっそくですが、ツールバーの実装をしてみたいと思います。
Editor フォルダを作成し、右クリックのメニューから「UIElements Editor Window」を選択してください。
「Sample2」を入力してください。
以下の3ファイルが生成されました、次にこの3ファイルを編集したいとおもいます。
Sample2.uss は使わないので削除してください!
次に、Sample2.uxml を以下のように変更してください。
<?xml version="1.0" encoding="utf-8"?>
<engine:UXML
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:engine="UnityEngine.UIElements"
xmlns:editor="UnityEditor.UIElements"
xsi:noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd"
xsi:schemaLocation="UnityEngine.UIElements ../../UIElementsSchema/UnityEngine.UIElements.xsd">
<engine:Label text="Sample2 UXML" />
</engine:UXML>
次に、Sample2.cs を以下のように変更してください。
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;
public class Sample2 : EditorWindow
{
[MenuItem("UIElementsSamples/Sample2")]
public static void ShowExample()
{
Sample2 wnd = GetWindow<Sample2>();
wnd.titleContent = new GUIContent("Sample2");
}
public void OnEnable()
{
VisualElement root = rootVisualElement;
// Create Toolbar
{
var toolbar = new Toolbar();
root.Add(toolbar);
var btn1 = new ToolbarButton { text = "Button" };
toolbar.Add(btn1);
var spc = new ToolbarSpacer();
toolbar.Add(spc);
var tgl = new ToolbarToggle { text = "Toggle" };
toolbar.Add(tgl);
var spc2 = new ToolbarSpacer() { name = "flexSpacer1", flex = true };
toolbar.Add(spc2);
var menu = new ToolbarMenu { text = "Menu" };
menu.menu.AppendAction("Default is never shown", a => { }, a => DropdownMenuAction.Status.None);
menu.menu.AppendAction("Normal menu", a => { }, a => DropdownMenuAction.Status.Normal);
menu.menu.AppendAction("Hidden is never shown", a => { }, a => DropdownMenuAction.Status.Hidden);
menu.menu.AppendAction("Checked menu", a => { }, a => DropdownMenuAction.Status.Checked);
menu.menu.AppendAction("Disabled menu", a => { }, a => DropdownMenuAction.Status.Disabled);
menu.menu.AppendAction("Disabled and checked menu", a => { }, a => DropdownMenuAction.Status.Disabled | DropdownMenuAction.Status.Checked);
toolbar.Add(menu);
var spc3 = new ToolbarSpacer() { name = "flexSpacer2", flex = true };
toolbar.Add(spc3);
var popup = new ToolbarMenu { text = "Popup", variant = ToolbarMenu.Variant.Popup };
popup.menu.AppendAction("Popup", a => { }, a => DropdownMenuAction.Status.Normal);
toolbar.Add(popup);
}
// Import UXML
{
var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/Sample2.uxml");
// var styleSheet = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/Editor/Sample2.uss");
VisualElement labelFromUXML = visualTree.CloneTree();
// labelFromUXML.styleSheets.Add(styleSheet);
root.Add(labelFromUXML);
}
}
}
動作結果
どうでしたか簡単に実装が行えたと思います。
次に読んでほしい記事
- Unity受賞一覧
- 人気のアセット一覧
- Unityでおすすめアセット集(2019/11更新)
- Unity:初心者におすすめの無料アセット12選
- Unityのおすすめアセット 5選(カメラ編)
- Unityのおすすめアセット 4選(アニメーション編)
- Unityのおすすめアセット 4選(データ編)
- Unityのおすすめアセット 4選(AI編)
- Unityのおすすめアセット 3選(ポストエフェクト編)
- Unityのおすすめアセット 7選(AR・VR・MR編)
- Unityのおすすめアセット 5選(ネットワーク編)
- Unityのおすすめアセット 5選(シェーダー編)
- Unityのおすすめアセット 6選(レンダリング編)
- Unityのおすすめアセット 7選(UI・GUI編)
- Unityのおすすめアセット 4選(スクリプティング)
- Unityのおすすめアセット 5選(モバイルネイティブ機能)
- Unityのおすすめアセット 7選(モデリング)
- Unityのおすすめアセット 50選 ゲームジャム(GameJam) ハッカソン(Hackathon)
- 人気のモデル(キャラクター)