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