Resources
在Asset下创建Resources文件夹,注文件夹名称不能打错,如果不用此方法也可以用io流完成Json的读取
Load
Load(“path”)path表示Resources文件夹下路径,用于加载在Resources文件夹下物件和文字文件
UnloadUnusedAssets
用于卸载没有用的资源,减少内存压力,注像物件生成后如果马上进行UnloadUnusedAssets就会造成找不到物件贴图
LoadAll
用于加载文件夹内所有的物件
LoadAsync
LoadAsync(“path”)path表示Resources文件夹下路径用于异步加载资源
FindObjectsOfTypeAll
FindObjectsOfTypeAll(Type type); 返回一个对象的类型或从type派生的数组
查找该类型的所有对象,这个函数可以返回加载的Unity物体的任意类型,包含游戏对象、预制体、材质、网格、纹理等等。它也会列出内部的东西,因此,请格外小心处理返回的对象的方式。相反Object.FindObjectsOfType这个函数也会列出禁用的对象。
private void Awake()
{
TextAsset WPText = Resources.Load("WeaponData") as TextAsset;
}
Json
序列化处理
JsonUtility
unity自带的Json处理
进行整体进行存档和载入比较方便,但如果将文件具体数值进行处理就会复杂
FromJson
FromJson(string jsonString);
从Json表达式创建对象。jsonString为整段序列化Text, 用于创建一个组件内部工具,该方法使用Unity序列化;因此你创建的类型必须支持序列化。它必须是有序列化属性标记的类或结构。对象的域必须支持序列化。不支持的域和私有域或者非序列化属性标记的域一样,将会被忽略。 如果JSON表示法丢失任何部分,它们将会指定默认值(即T类型域会是默认值-它将不会指定任何值初始化,对象结构在反序列化期间不会执行)。
FromJsonOverwrite
FromJsonOverwrite(序列化Text, 某个组件);类似于Load用于载入,可以将json的快速载入,通过读取Json表示法重写对象数据。
ToJson
ToJson(object obj);将某对象转换成Json文字
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class JsonTest : MonoBehaviour{
// Start is called before the first frame update
void Start()
{
TextAsset Jsonstring = Resources.Load("Test") as TextAsset;
PlayerInfo player = PlayerInfo.CreateFromJSON(Jsonstring.text);
print(player.health);
}
}
[Serializable]
public class PlayerInfo{
public string playerName;
public int lives;
public float health;
public static PlayerInfo CreateFromJSON(string jsonString){
return JsonUtility.FromJson<PlayerInfo>(jsonString);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerState : MonoBehaviour
{
public string playerName;
public int lives;
public float health;
void Start()
{
TextAsset Jsonstring = Resources.Load("Test") as TextAsset;
Load(Jsonstring.text);
}
public void Load(string savedData)
{
JsonUtility.FromJsonOverwrite(savedData, this);
}
}
JsonObject
功能比较强大,便于细节修改
Absorb
Absorb(JSONObject obj),Text1.Absorb(Text2);将Text2加在Text1的后面
add
只能增加一个值
AddField
AddField加一个二元元素
f
浮点数
str与ToString()
str不带双引号,后者会携带双引号
private void Awake()
{
TextAsset WPText = Resources.Load("WeaponData") as TextAsset;
TextAsset TestText = Resources.Load("Test") as TextAsset;
JSONObject Text1 = new JSONObject(WPText.text);
JSONObject Text2 = new JSONObject(TestText.text);
print(Text1["playerName"].ToString());
}