🔄

Unity Editor拡張のボタンへのアイコン表示について

2023/12/04に公開

「Happy Elements Advent Calendar 2023」 12月4日の記事です。

はじめに

Happy Elements株式会社 カカリアスタジオで新規タイトルを開発中のチームで働いているU.S.です。

最近はよくUnityのEditor拡張を書いています。
その中でボタンのアイコン表示について対応したことを書きたいと思います。

所属グループでの主な業務内容

現在は新規タイトルを開発中です。
ゲームエンジニアとして、Unityを使ってクライアントサイドの開発を行なっています。

EditorWindowでのボタン表示

アプリ開発に使うツールをEditor拡張で書くときにボタンを出すことがあります。
データの更新ボタンを作ったときに最初は以下のように作りました。
Reloadボタン

エンジニア以外も使うから日本語の方が良かったりするかもしれないと思って修正しました。
更新ボタン

チーム内の開発用に使うものなので分かればいいのですが、ちょっとかっこ悪いような気がしていました。

修正方針

Unityには多くのアイコンが用意されており、その中からReload画像を使用できないかと思い、調査を始めました。

UnityはUnityエディタのコードを公開してくれています。
https://github.com/Unity-Technologies/UnityCsReference

その中で適当にGameView.csを見てみました。
それっぽい指定をしているところを見つけます。
https://github.com/Unity-Technologies/UnityCsReference/blob/2023.3/Editor/Mono/GameView/GameView.cs#L94-L109

ボタンとして使っているところはこういう使い方でした。
https://github.com/Unity-Technologies/UnityCsReference/blob/2023.3/Editor/Mono/GameView/GameView.cs#L629

ヘルプを確認するとEditorGUIUtility.TrIconContentメソッドの1つ目の引数にiconNameを指定すればGUIContentが取得できそうです。
https://docs.unity3d.com/2023.3/Documentation/ScriptReference/EditorGUIUtility.TrIconContent.html

EditorGUIUtility.TrIconContentで検索して、今回の更新処理に合いそうなものを探すとRefreshというものが見つかりました。
https://github.com/Unity-Technologies/UnityCsReference/blob/2023.3/Editor/Mono/GUI/CacheServerWindow.cs#L39

使ってみるとそれっぽくなりました。
Refreshボタン

  • ソースコード
if (GUILayout.Button(EditorGUIUtility.TrIconContent("Refresh", "Reload"), GUILayout.Width(30))) {
  // ボタンが押された時の処理
}

まとめ

ささいなことでしたが、開発ツールを使うたびに「ここかっこ悪いな」と思って使っているとテンション下がりますし、アイコン画像を使ったほうが分かりやすくなったのではないかと思います。

Happy Elements

Discussion