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 ...
随机推荐
- java全栈day34---表单CSS
今日内容介绍 1 使用html的表单标签编写“注册页面” 2 使用DIV和CSS重写网站首页 所有的html标签中,表单标签是最重要的.在实际开发中,最经典的实例就是用户注册,覆盖 了表单标签的所有的 ...
- 在Tomcat启动时直接创建servlet(二)
- Redis实现用户关注功能
最近项目要涉及到粉丝关注问题,权衡再三还是使用Redis实现比较方便,使用Redis的有序集合可以做到根据关注的时间有序的取出列表,假设我的ID是me,别人的ID是other. 1. 添加关注 添加关 ...
- winform改变控件的外形
GraphicsPath gp = new GraphicsPath(); gp.AddEllipse(0, 0, 40, 40); Region region = new Region(gp); c ...
- 搭建 pytorch框架
Pytorch 发布了1.0,对windows的支持效果更好,因此,今天试了一下安装Pytorch.安装速度确实很快,安装也很方便. 进入pytorch的官网,选择对应的版本 根据版本输入相应命令 注 ...
- UWP&WP8.1 基础控件—Button
Button作为最常用的控件,没有特别难的用法,是一个非常简单,可以很快就掌握的控件. Button 基础用法: 同样,在UWP项目中,可以从工具箱中拖拽到面板中进行使用.也可以使用XAML语法进行编 ...
- WGestures鼠标手势快捷手势介绍
1.官方网站 WGestures 2.快截图 3.自定义快捷键列表
- mysql 表压缩
mysql中经常出现历史表,这些表不会进行修改数据的操作,只有读操作.那么我们可以对其进行压缩处理,缩减磁盘空间.Innodb表和MyISAM表的压缩指令不一样.下面分别来讨论: 一.InnoDB表 ...
- Cannot find module 'webpack/bin/config-yargs'
1.版本不兼容 npm install webpack-dev-server@1.15.0 -g
- Jmeter解决乱码问题
一.设置编码方式utf-8并勾选编码 适用场景:参数中含有中文或乱码 二.增加beanshell脚本 添加BeanShell PostProcessor或者BeanShell Sampler,输入代码 ...