0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Unity】FolderをScriptableObjectに登録する。

Last updated at Posted at 2021-08-07

はじめに

エディター拡張をしているときに、ScriptableObjectにFolderパスを登録してしまうと移動したときの取得できなくなるので、フォルダー(GUID)を登録する形にしたいというお話が出てFolderは登録できないのでstringでGUIDにしましたと言われ、そんなことないと思いやってみました。

先に結論を書くとUnityEngine.Objectを継承しているものは登録できるのでFolderも登録できます。

Properties...でクラスがわかることを追記:2021/08/30,

ScriptableObjectData.cs

using UnityEngine;

public class ScriptableObjectData : ScriptableObject
{
    public UnityEngine.Object asset;
}

ですが、一覧にはすべて出てきます。

image.png

ある程度登録できるものを制限したい

とは言えUnityEngine.Objectにしてしまうとすべてのものが登録出来てしまうのである程度制限をかけたいです。
なのでFolderとはどのクラスなのかを調べないといけませんので軽く調べてみましょう。

unityのC#部分はオープンソースになっているので探せば見つかるかもしれませんが、正直探しづらいです。
簡単に調べてみました。

CheckClassType.cs
using UnityEditor;
using UnityEngine;

public class CheckClassType : Editor
{
    [MenuItem("Assets/Qiita/Check Select Object")]
    private static void CheckSelectObject()
    {
        Debug.Log(Selection.activeObject.GetType());
    }
}

調べたいファイルから右クリックで
image.png

ログにUnityEditor.DefaultAssetと出ました。
早速修正してみます。

CheckClassType.cs
using UnityEngine;

public class ScriptableObjectData : ScriptableObject
{
    public UnityEngine.Object asset;
    public UnityEditor.DefaultAsset folder;
}

image.png

一応、制限されましたがアセットバンドルやシーンは一覧にでます。
シーンはUnityEditor.SceneAssetなのでUnityEditor.FolderAssetがあるのかなと思いましたがありませんでした、これ以上は面倒なので調べませんがもしかしたらFolderのみを表示するようにクラスがあるかもしれません。

unity2020.3ぐらいからProperties...が追加されてあるクラスもわかるみたいでした。(追記:2021/08/30)

image.png

image.png

おわりに

unityの記事は多いので大抵のものは探せば見つかりますが、最近見つからなかったら出来ないとなるunityプログラマーは多いのではと思いました。自分自身知らないことは多いですが、いろいろ考えたり自分で検証したりすれば記事が見つからなくても実装できるのでぜひ記事を見て終わりではなく検証していただければと思います。
正直ネットで記事を探すよりも検証する方が楽しいです。

参考

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?