1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UI Toolkit】Unity6 で UiBuilder 上で Image タグを Library から使用できるように拡張する

Posted at

概要

  • Unity6(6000.0.23f1) にて、なぜか Image が UiBuilder の Library に入ってなかったので追加してみました
  • 注意: 独自の VisualElement を追加するコードの書き方が Unity6 以前のものだと Obsolated になっているので、以前のバージョンとの互換性はありません
  • UI Toolkit よくわからないまま対応してみたものなので、もっといいやり方あるよとか、これだとこういう問題があるよ等のご指摘があると嬉しいです

作ったもの

ui-toolkit-image.gif

コード全文

Image.cs
using UnityEngine;
using UnityEngine.UIElements;

namespace Example.UIElement
{
    [UxmlElement]
    public partial class Image : VisualElement
    {
        [UxmlAttribute]
        public Sprite ImageSprite
        {
            get => _image.sprite;
            set
            {
                _image.sprite = value;
            }
        }

        private readonly UnityEngine.UIElements.Image _image;

        public Image()
        {
            _image = new UnityEngine.UIElements.Image();

            Add(_image);
        }
    }
}

解説

UIElements.Image をラップしておいて、画像更新の窓口だけ Inspector に公開できるようにしてみました。
使うにあたって違和感がないように、同名の Image クラス名を採用していますが、干渉しないように名前空間を切りました。

[UxmlElement]
public partial class Image : VisualElement

UxmlElement アトリビュートを partial クラスに追記することによって、UiBuilder の Library に追加できます。

[UxmlAttribute]
public Sprite ImageSprite

[UxmlAttribute] を付与することで、Inspector に追加することができます。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?