Unity 将一个类序列化并以 ".asset" 类型存储在 Resources 文件夹下
概念:
序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
实现例子:
写一个MyClass类,提供了可被序列化的属性,不用其余操作,如下:
using UnityEngine;
using UnityEditor; [InitializeOnLoad]
public class MyClass : ScriptableObject
{ public void SetBoolenTest(bool value)
{
boolenTest = value;
DirtyEditor();
} public void SetIntTest(int value)
{
intTest = value;
DirtyEditor();
} public void SetStrTest(string value)
{
strTest = value;
DirtyEditor();
} public void SetStrIndex(int index)
{
strIndex = index;
SetStrTest(strList[index]);
DirtyEditor();
} private void DirtyEditor()
{
EditorUtility.SetDirty(Instance);
} public bool BoolenTest
{
get
{
return Instance.boolenTest;
}
}
public int IntTest
{
get
{
return Instance.intTest;
}
}
public string StrTest
{
get
{
return Instance.strTest;
}
}
public int StrIndex
{
get
{
return strIndex;
}
} [SerializeField]
private bool boolenTest = true;
[SerializeField]
private int intTest = ;
[SerializeField]
private string strTest = "hello world";
[SerializeField]
private int strIndex = ; public string[] strList = new string[] { "str_1", "str_2", "str_3" }; private static MyClass _instance;
public static MyClass Instance
{
get
{
if (_instance == null)
{
_instance = Resources.Load("MyClass") as MyClass;
}
if (_instance == null)
{
_instance = CreateInstance<MyClass>();
AssetDatabase.CreateAsset(_instance, "Assets/Resources/MyClass.asset");
}
return _instance;
}
}
}
写一个测试类,不用其余操作,如下:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine; public class ToolsTest : MonoBehaviour { // Use this for initialization
void Start () { } // Update is called once per frame
void Update () { } [MenuItem("EditorTools/Test")]
public static void Test()
{
var myClass = MyClass.Instance;
myClass.SetIntTest();
myClass.SetBoolenTest(false);
myClass.SetStrTest("hello,I am black"); }
}
Unity菜单栏会出现 EditorTools —Test 按钮,此时新建一个Resources文件夹,然后点击按钮(没有Resources文件夹点击按钮没反应),就会在Resources文件夹下产生一个存储的文件,(没有反应的话重新打开此场景)如下:

Unity 将一个类序列化并以 ".asset" 类型存储在 Resources 文件夹下的更多相关文章
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
- Unity AssetBundles and Resources指引 (二) Resources文件夹
本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...
- 【安卓】安卓res文件夹下的资源文件与R.java文件里面类的对应关系
对于drawable.layout.menu文件夹下的每一个文件都分别会在R.java文件里面生成drawable.layout.menu类的一个常量,类名就是文件夹的名字,常量的名字就是文件名字. ...
- webform工程中aspx页面为何不能调用appcode文件夹下的类(ASP.NET特殊文件夹的用法)
App_code 只有website类型的工程才有效. App_Code 下创建的.cs文件仅仅是“内容”不是代码.你设置那个文件为“编译”就行了. 其他特殊文件夹 1. Bin文件夹 Bin文件夹包 ...
- java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量
package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...
- test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下
test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下 Maven的标准工程结构 Maven的标准工程结构如下: |-- pom.xml(maven的核心配置文件 ...
- 每日学习心得:SharePoint 为列表中的文件夹添加子项(文件夹)、新增指定内容类型的子项、查询列表中指定的文件夹下的内容
前言: 这里主要是针对列表中的文件下新增子项的操作,同时在新建子项时,可以为子项指定特定的内容类型,在某些时候需要查询指定的文件夹下的内容,针对这些场景都一一给力示例和说明,都是一些很小的知识点,希望 ...
- 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。
下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是( ). ./表示当前项目的路径../表示当 ...
- Linux将一个文件夹或文件夹下的所有内容复制或移动到另一个文件夹
1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...
随机推荐
- AJAX的dataType问题
dataType是预期服务器返回的数据类型.如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML.在 1.4 中,JSON 就会 ...
- 12. git常用语法总结
git介绍与安装这里不再多说,再说也不如廖雪峰大佬总结的优秀: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67 ...
- C# 实现文件(夹)在ftp服务器间的同步【无需将文件(夹)保存到本地】
C#实现不同ftp服务器间文件(夹)同步 图1 实现不同ftp服务器间文件(夹)同步的实现思路图 /// <summary> /// 将文件夹1从ftp服务器1移到ftp服务器2文件夹2 ...
- 数据结构_bubble_sort
问题描述 给定一个 1~N 的排列 P,即 1 到 N 中的每个数在 P 都只出现一次. 现在要对排列 P 进行冒泡排序,代码如下:for (int i = 1; i <= N; ++i)for ...
- 《Head First Servlets & JSP》-7-使用JSP
学习的知识点 JSP,最后会变成一个servlet JSP最终或变成一个完整的servlet在Web应用中运行,只不过这个servlet类会由容器写好. JSP中的scriptlet 所谓script ...
- Java 接口实际应用代码
package interfaceDemo; interface Equipment_specifications{ void DoWork(); } class MBorad{//主板 privat ...
- jquery easyui datagrid 多选只能获取一条数据
DataGrid属性: singleSelect ------如果为true,则只允许选择一行: idField ------- 指明哪一个字段是标识字段: 方法: 一:getSelections-- ...
- C#中关于换行符的记录
最近在做一个练习的时候,从其他数据库提出来数据装到自己的数据表中,发现同是编辑器的内容却在页面上显示不出来,但是在数据库中又确实存在,经过一番折腾之后发现是 换行符 的问题.在我的编辑器中是以 ‘\r ...
- C#找到目录和其子目录的某个文件
string url = ""; string[] urls = Directory.GetFiles(目录, 文件名, SearchOption.AllDirectories); ...
- UIColor
UIColor.CIColor 和 CGColor 出现在不同的类库里面,其实就是颜色存储方式不同而已,比如 999 可以用 10 进制.2 进制.16 进制等存储.三者之间都是能够方便转换的,特别是 ...