您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
52 行
2.0 KiB
52 行
2.0 KiB
using UniGLTF;
|
|
using UnityEngine;
|
|
|
|
namespace UniVRM10
|
|
{
|
|
/// <summary>
|
|
/// ScriptableObject なのだけど Editor では、ヒエラルキーを参照したい。
|
|
/// 参照して、ヒエラルキー内の Renderer を選択したりしたい。
|
|
///
|
|
/// そういうオブジェクト。
|
|
/// </summary>
|
|
public class PrefabRelatedScriptableObject : ScriptableObject
|
|
{
|
|
#if UNITY_EDITOR
|
|
/// <summary>
|
|
/// Preview 用のObject参照
|
|
/// </summary>
|
|
[SerializeField]
|
|
GameObject m_prefab;
|
|
public GameObject Prefab
|
|
{
|
|
set { m_prefab = value; }
|
|
get
|
|
{
|
|
if (m_prefab == null)
|
|
{
|
|
var assetPath = UnityEditor.AssetDatabase.GetAssetPath(this);
|
|
if (!string.IsNullOrEmpty(assetPath))
|
|
{
|
|
// if asset is subasset of prefab
|
|
m_prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(assetPath);
|
|
if (m_prefab != null) return m_prefab;
|
|
|
|
// 同じフォルダに prefab が居る
|
|
var parent = UnityPath.FromUnityPath(assetPath).Parent;
|
|
var prefabPath = parent.Parent.Child(parent.FileNameWithoutExtension + ".prefab");
|
|
m_prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath.Value);
|
|
if (m_prefab != null) return m_prefab;
|
|
|
|
// 同じフォルダに vrm(ScriptedImporter) が居る
|
|
var parentParent = UnityPath.FromUnityPath(assetPath).Parent.Parent;
|
|
var vrmPath = parent.Parent.Child(parent.FileNameWithoutExtension + ".vrm");
|
|
m_prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(vrmPath.Value);
|
|
if (m_prefab != null) return m_prefab;
|
|
}
|
|
}
|
|
return m_prefab;
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
}
|