【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件

这篇具有很好参考价值的文章主要介绍了【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件

AssetDatabase 类提供的 LoadAssetAtPath 方法和 CreateAsset 方法只能读写Assets、Packages文件夹中的资产,如果想要读写其他文件夹(ProjectSettings、UserSettings、Library等)中的资产,需要使用
UnityEditorInternal.InternalEditorUtility 类。

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件

方法说明

  • Object[] LoadSerializedFileAndForget(string path)
    • 从指定路径加载资产
    • path 参数:相对于工程根目录的加载路径,带扩展名,例如 ProjectSettings/MySettings.asset
    • 返回值:加载到的资产数组
  • void SaveToSerializedFileAndForget(Object[] obj, string path, bool allowTextSerialization)
    • 向指定路径存储资产
    • obj 参数:要存储的资产数组
    • path 参数:存储路径
    • allowTextSerialization 参数:是否以文本形式存储

示例

该示例在 ProjectSettings 文件夹中创建了一个名为 MySettings.asset 的配置文件,并在菜单栏中添加了一个菜单项 Tests/Project Settings Demo 来进行读写测试。

注意:示例中的创建的资产只能在Editor中读写,不可用于非Editor环境。

ProjectSettings 文件夹中的配置文件,通常需要实现一个对应的 SettingsProvider 。

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件文章来源地址https://www.toymoban.com/news/detail-443248.html

using UnityEditor;
using UnityEditorInternal;
using UnityEngine;
using UnityEngine.Assertions;

// See also: https://docs.unity3d.com/ScriptReference/SettingsProvider.html 
public class MySettings : ScriptableObject
{
    #region Test

    [MenuItem("Tests/Project Settings Demo")]
    public static void TestSave()
    {
        var mySettings = MySettings.Instance;
        var data = mySettings.data;
        var newData = data + 1;
        var save = EditorUtility.DisplayDialog("Test Project Settings Demo",
            $"Old data: {data}, new data: {newData}.", "Save", "Cancel");
        if (save)
        {
            mySettings.data += 1;
            mySettings.Save();
        }
    }

    #endregion

    #region Singleton

    public const string AssetPath = "ProjectSettings/MySettings.asset";
    private static MySettings s_instance;

    public static MySettings Instance
    {
        get
        {
            if (!s_instance) CreateAndLoad();
            return s_instance;
        }
    }

    private static void CreateAndLoad()
    {
        Assert.IsTrue(!s_instance);

        // Load
        var files = InternalEditorUtility.LoadSerializedFileAndForget(AssetPath);
        if (files.Length != 0)
        {
            s_instance = (MySettings)files[0];
        }

        // Create
        if (!s_instance)
        {
            s_instance = CreateInstance<MySettings>();
            EditorUtility.SetDirty(s_instance);
            s_instance.Save();
        }
    }

    #endregion


    // Put your data here
    public int data;


    public MySettings()
    {
        if (s_instance)
        {
            Debug.LogError($"{nameof(MySettings)} already exists. Did you query the singleton in a constructor?");
        }
    }

    public void Save()
    {
        if (!s_instance)
        {
            Debug.LogError($"Cannot save {nameof(MySettings)}: no instance!");
            return;
        }

        InternalEditorUtility.SaveToSerializedFileAndForget(new[] { s_instance }, AssetPath, true);
    }
}

到了这里,关于【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【头歌】——数据分析与实践-基于Python语言的文件与文件夹管理-文本 文件处理-利用csv模块进行csv文件的读写操作

    第1关 创建子文件夹 第2关 删除带有只读属性的文件 第3关 批量复制文件夹中的所有文件 未通过本题,如果您通过了本题欢迎补充到评论区,有时间我会整理进来 第1关 读取宋词文件,根据词人建立多个文件 第2关 读取宋词文件,并根据词人建立多个文件夹 第3关 读取宋词文

    2024年01月25日
    浏览(41)
  • Unity 获取文件夹引用并读取文件夹路径

    编辑器中的文件夹属于DefaultAssets类型的资源 EditorGUILayout.ObjectField 可以获取对象的引用 AssetDatabase.GetAssetPath可通过对象的实例id获取资源路径 DirectoryInfo 可获取目录内文件信息 Path.GetFileNameWithoutExtension 可获取无后缀的文件名 弹出窗口 选择文件夹 打印文件夹内文件名 点击文件

    2024年04月27日
    浏览(30)
  • 初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)

    目录 unity的安装 安装unity hub 版本选择 中文设置 安装编辑器 模块一 模块二 模块三 工程文件介绍 主要文件 Assets Library  其他文件 ProjectSettings Packages [ProjectName].sln  unity国内的官网:https://unity.cn/ 进入国内的官网点击“下载 unity” 下载 unity hub 再进入其中安装编辑器只有相对

    2024年02月05日
    浏览(44)
  • Unity功能实现_打开Window的文件/文件夹

    🏆 个人愚见,没事写写笔记 🏆《博客内容》:Unity3D开发内容 🏆🎉欢迎 👍点赞✍评论⭐收藏 🔎目标:打开Window的文件/文件夹 ☀️核心代码 GetOpenFileName和GetSaveFileName都是Windows API中的函数,它们都定义在comdlg32.dll中。这两个函数都是用来显示文件打开或保存对话框的。

    2024年02月02日
    浏览(47)
  • Unity内文件夹详解

    Assets:这是Unity项目中包含所有资源的主要文件夹。这包括3D模型、纹理、声音、动画、脚本、场景等等。 Editor: 只在编辑器下使用。 包含Unity编辑器扩展的脚本和资源。这些扩展可以添加新的菜单项、工具栏按钮、面板等等,这些脚本会在Unity编辑器中运行而不会出现在游

    2024年02月04日
    浏览(34)
  • Unity中读取Json文件:基于Assets/Resources文件夹

    我好生气😤,Python,JS里面一两行代码能够搞定的Json读取,在Unity中使用C#读取Json文件超多坑,爬出来一个又来一个。 主要是JsonUtility.FromJson太不给力了。 最好的方式是,使用 https://github.com/jilleJr/Newtonsoft.Json-for-Unity 这个第三方库。详情见下。 Step 1: 先把对应的Json File放到

    2024年02月12日
    浏览(38)
  • Unity的工程中文件夹介绍

    知乎上看篇文章,讲学一样的东西有两种入门方式,一种方式是从简单的学起,另一种方式是基础的学起。所谓不管简单还是基础,两个都要同样的学。 这篇内容介绍博主自己学到的Unity工程的目录结构相关内容,最终还是以Unity的官方文档为准。当然网上各类分享很多,博

    2024年02月01日
    浏览(34)
  • Unity打开本地文件夹替换视频

    AVpro插件是一款很强大的视频播放插件,配合Unity使用有意想不到的效果,他的各项功能网上都有,我就不进行展开讨论了。 该插件的获取方式为AssetStore中购买下载,该插件有一个免费版本可供使用,付费版本的功能强大一点。 有需要的也可以私信我,我分享给你,你只能用

    2023年04月08日
    浏览(96)
  • Unity C# 打开windows对话框选择文件夹或选择文件

    unity没有提供打开windows对话框的api,在开发种也会遇到选择系统文件夹或选择系统文件的需求

    2024年04月26日
    浏览(28)
  • Unity加载资源时的常用路径或文件夹

    加载资源或者下载资源时的常用路径,我们平常开发下用的是编辑器下的路径。 编辑器下使用的资源路径和Windows端打包后并没有什么区别。你在编辑器下写的资源路径代码,大概率是可以在Windows下无缝运行的,重点是移动端打包后使用的资源路径,和Windows的资源路径有所不

    2024年02月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包