【Unity编辑器扩展入门】第 4 章 ScriptableObject 创建父子层级的资源

这篇博客介绍了如何在 Unity 中创建具有层级关系的 ScriptableObject 资源。通过创建 ChildScriptableObject 和 ParentScriptableObject,实现了父子资源的实例化、父子关系的建立以及子资源的删除功能。利用 AssetDatabase 工具进行资源的保存和更新操作。
摘要由CSDN通过智能技术生成

0.创建有层级的资源

1.子资源代码

using UnityEngine;
public class ChildScriptableObject : ScriptableObject
{
    [SerializeField]
    string str;
    void OnEnable()
    {
        name = "New ChildScriptableObject";
    }
}

2.父资源代码

创建父子资源、删除子资源

using UnityEngine;
using UnityEditor;
public class ParentScriptableObject : ScriptableObject
{
    //--------------父资源内容
    [SerializeField]
    ChildScriptableObject child;
    //------------------------

    const string PATH = "Assets/Editor/04/New ParentScriptableObject.asset";
    /// <summary>
    /// 创建父资源、子资源,并建立父子关系
    /// </summary>
    [MenuItem("Assets/Create ScriptableObject")]
    static void CreateScriptableObject()
    {
        //父物体实例化
        var parent = ScriptableObject.CreateInstance<ParentScriptableObject>();
        //子物体实例化
        parent.child = ScriptableObject.CreateInstance<ChildScriptableObject>();

        //隐藏子物体展开箭头,必要时使用
        //parent.child.hideFlags = HideFlags.HideInHierarchy;

        //创建父子关系
        AssetDatabase.AddObjectToAsset(parent.child, PATH);
        //保存资源到本地
        AssetDatabase.CreateAsset(parent, PATH);

        //更新
        AssetDatabase.ImportAsset(PATH);
    }

    /// <summary>
    /// 删除子资源
    /// </summary>
    [MenuItem("Assets/Remove ChildScriptableObject")]
    static void Remove()
    {
        var parent = AssetDatabase.LoadAssetAtPath<ParentScriptableObject>(PATH);
        //アセットの CarentScriptableObject を破棄
        Object.DestroyImmediate(parent.child, true);
        //破棄したら Missing 状態になるので null を代入
        parent.child = null;
        //再インポートして最新の情報に更新
        AssetDatabase.ImportAsset(PATH);
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值