概念:

序列化 (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 文件夹下的更多相关文章

  1. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

  2. Unity AssetBundles and Resources指引 (二) Resources文件夹

    本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...

  3. 【安卓】安卓res文件夹下的资源文件与R.java文件里面类的对应关系

    对于drawable.layout.menu文件夹下的每一个文件都分别会在R.java文件里面生成drawable.layout.menu类的一个常量,类名就是文件夹的名字,常量的名字就是文件名字. ...

  4. webform工程中aspx页面为何不能调用appcode文件夹下的类(ASP.NET特殊文件夹的用法)

    App_code 只有website类型的工程才有效. App_Code 下创建的.cs文件仅仅是“内容”不是代码.你设置那个文件为“编译”就行了. 其他特殊文件夹 1. Bin文件夹 Bin文件夹包 ...

  5. java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

    package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...

  6. test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下

    test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下 Maven的标准工程结构 Maven的标准工程结构如下: |-- pom.xml(maven的核心配置文件 ...

  7. 每日学习心得:SharePoint 为列表中的文件夹添加子项(文件夹)、新增指定内容类型的子项、查询列表中指定的文件夹下的内容

    前言: 这里主要是针对列表中的文件下新增子项的操作,同时在新建子项时,可以为子项指定特定的内容类型,在某些时候需要查询指定的文件夹下的内容,针对这些场景都一一给力示例和说明,都是一些很小的知识点,希望 ...

  8. 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。

    下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是(    ). ./表示当前项目的路径../表示当 ...

  9. Linux将一个文件夹或文件夹下的所有内容复制或移动到另一个文件夹

    1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...

随机推荐

  1. scala中的注解

    scala中很多注解实现java中关键字的用法 @volatile注解标记为易失的:@transient注解将字段标记为瞬态的:@strictfp注解对应strictfp修饰符:@native注解标记 ...

  2. IOC与依赖注入

    spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控 ...

  3. gRPC官方文档(概念)

    文章来自gRPC 官方文档中文版 gRPC 概念 本文档通过对于 gRPC 的架构和 RPC 生命周期的概览来介绍 gRPC 的主要概念.本文是在假设你已经读过文档部分的前提下展开的.针对具体语言细节 ...

  4. java中计算一段时间内白天的时间和夜晚的时间

    之前,采用拼接字符串的形式,不断地在Date类型和Long类型之间转换,实在是太过于麻烦,后来采取了这种思路:假设我们将22:00 ~ 10:00 视为夜间时间,则我们先计算出10:00 相对于当天的 ...

  5. Tarjan+LCA【洛谷P2783】 有机化学之神偶尔会做作弊

    [洛谷P2783] 有机化学之神偶尔会做作弊 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 有一天他一边搓炉石一边监考,而你作为一个信息竞赛的大神也来凑热闹. 然而你的化竞基友却向你求助了. ...

  6. An error has occurred. See error log for more details. java.lang.NullPointerException

    今天重新新建一个eclipse的空间,就报了这么一个错误,百度找了很多,发现不对头,都不行.后来点开错误一看,原来是web.xml里面没有文件头造成的. 解决办法:只需要在web.xml文件里添加文件 ...

  7. 【模板】普通平衡树 Splay

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入xxx数 删除xxx数(若有多个相同的数,因只删除一个) 查询xxx数的排名(排名定义为比当前数小的数的个数 ...

  8. CoreAnimation 核心动画 / CABasicAnimation/ CAKeyframeAnimation

    - (void)createBaseAnimation{ //基础动画 CABasicAnimation *animation = [CABasicAnimation animation]; anim ...

  9. Navicat安装教程、建表教程

    1.安装教程: 转自:https://www.jianshu.com/p/5f693b4c9468 2.使用教程(建表操作): https://jingyan.baidu.com/article/e6 ...

  10. SQL Server中,varchar和nvarchar如何选择

    正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??). ...