在Unity中制作配置文件通过ScriptableObject来保存数据

有时需要在Unity写一个配置保存数据,可以使用ScriptableObject类来实现。

例如:

using System;
using UnityEngine;

[CreateAssetMenu]
public class IDXData : ScriptableObject
{
    public int idx;
    public int ver;

}

通过鼠标右键创建后就可以填写数值了。
在这里插入图片描述

在这里插入图片描述

如果要读取可以通过LoadAssetAtPath这样来使用
我们创建一个编辑器脚本,加一个菜单调用。

 	[MenuItem("Window/导出资源模板", false, 2052)]
    static void OutPut()
    {
        //ScriptableWizard.DisplayWizard<HotWizard>("版本号", "确定");
        string resdir = "Assets/Res/model/";
        
        DirectoryInfo TheFolder = new DirectoryInfo(resdir);
        foreach (DirectoryInfo NextFolder in TheFolder.GetDirectories())
        {
            string path = resdir + NextFolder.Name + "/" + "info.asset";
            IDXData d = AssetDatabase.LoadAssetAtPath<IDXData>(path);
            Debug.Log(path+" - " + d.idx +" : "+ d.ver);
        }
    }

查找这个文件可以

			string[] path = UnityEditor.AssetDatabase.FindAssets("info");
            string pname = "";
            if (path.Length > 0)
            {
                UnityEngine.Debug.Log("有文件");
                pname = AssetDatabase.GUIDToAssetPath(path[0]);
                IDXData d = AssetDatabase.LoadAssetAtPath<IDXData>(pname);
            }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity使用Instantiate()方法克隆ScriptableObject文件出现卡顿的可能原因有几种。 首先,ScriptableObjectUnity一种用于存储和共享数据的可编程对象。它的实例化过程可能需要分配额外的内存和执行复杂的初始化代码,从而导致卡顿。 其次,如果ScriptableObject文件较大,克隆可能需要花费较长间读取和复制文件内容,从而导致卡顿。这种情况下,可以尝试使用异步操作或延迟加载的方式来减少卡顿的程度。 另外,如果克隆ScriptableObject的操作发生在游戏运行,而不是编辑器环境,那么卡顿可能是由于主线程被阻塞而引起的。在游戏运行进行大量的克隆操作会导致帧率下降,从而造成卡顿。为了解决这个问题,可以考虑将克隆操作放在后台线程执行,或者使用对象池技术来重复利用已创建的ScriptableObject实例。 最后,如果在克隆ScriptableObject发起了大量其他操作,例如其他GameObject的实例化或计算密集型任务,也可能导致卡顿。在这种情况下,可以尝试优化代码逻辑,减少额外操作的数量,或者将它们分散到多个帧执行,以减轻卡顿的影响。 综上所述,Unity使用Instantiate()方法克隆ScriptableObject文件出现卡顿的原因可能是ScriptableObject的初始化过程、文件读取和复制耗、主线程阻塞以及其他操作的影响。可以采取异步操作、延迟加载、后台线程执行、对象池技术、优化代码逻辑等方法来减轻卡顿的程度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值