unity读取json文件怎么样让怪物有json里面的各个属性

在Unity中解析和封装Json - 简书
在Unity中解析和封装Json
转载请注明链接,谢谢:)
核心代码:
0.使用LitJson.dll
在Unity项目中载入LitJson.dll
using LitJ
1.制作一个类,用于储存和解析数据
public class UserData {
public string loginId;
public int userID;
//不能使用float
2.保存数据
a.首先用LitJson把UserData转化为string
b.用StreamWrite写入本地
c.其中如果要用在iOS和Android设备,存储路径最好是用Application.persistentDataPath
private string tempPath = Application.persistentDataPath + "/temp.json";
public void SaveTempData()
FileInfo fileInfo = new FileInfo(tempPath);
//把类转换为Json格式的String
string str = JsonMapper.ToJson(tempData);
//写入本地
StreamWriter sw = fileInfo.CreateText();
sw.WriteLine(str);
sw.Close();
sw.Dispose();
3.解析Json为类
a.把一段json格式的字符串转换为类
public void LoadTempData(String tempString)
FileInfo fileInfo = new FileInfo(tempPath);
if (fileInfo.Exists){
string tempString = File.ReadAllText(tempPath);
tempData = JsonMapper.ToObject&TempData&(tempString);
4.解析Json为通用格式
a.使用JsonData作为数据通用格式
b.JsonData和HashTable很类似,读出的数据需要进行类型转换
JsonData js = JsonMapper.ToObject(www.text);
tempData.loginId = (string)js["id"];
产品经理+交互设计师+视觉设计师+ios开发者+unity开发者+React+Nodejs
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
一、iOS 4种JSON数据解析方法详解 日/ 综合/ 共 9124字/ 字号小中大/评论关闭 在网络中数据的传输很多格式都是JSON或是XML,之前的博文已经介绍过XML,这篇介绍JSON数据。 在对JSON数据进行解析过程中大致有四种方法可供选择,包...
1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。 1、一个&.java&源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个publ...
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka Dat...
当今世界上有两大民族,都好像受到天意的密令指派。他们的起点不同,道路各异。美国人的征服是用劳动者的犁进行的,而俄国人的征服则是靠士兵的剑。——【法】托克维尔,1845年 起源() 冷战为什么会发生,首先要指出的是,战后的世界为美苏扩张提供了机遇,野心勃勃的...
小时候家里在农村,有一条从小陪我长大的土狗,没有名字,就叫大白狗,看着我长大,看着我上学,在我快7岁的时候被送给大姨,用来看家,后来不幸被小偷毒死,对我而言更像长辈吧,毕竟小时候它做过一段时间狗保姆,会一辈子记住的。然后一直到工作,爷爷也养了几条狗,不幸都不得善终,放弃了,...
《女诫》的第二篇,主题为“夫妇”。看过我另一篇文章《她说的话,你误会了吗》的小伙伴,也许还记得,我是从追溯当时的社会背景来推测,班昭不是为了提倡男尊女卑而写的《女诫》。对于这个推论,如果有小伙伴表示质疑的话,那么,在《女诫》的“夫妇”篇中,你可以知道我是如何通过内容推论出来...
王传林作品Unity中json的使用方法_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Unity中json的使用方法
中国移动互联网行业领军品牌|
总评分0.0|
&&json 作为一种后起之秀的数据格式,已经在业界很受欢迎,尤其是在移动互联网的今天,解析难度和效率那是相当的快。
阅读已结束,下载本文需要
定制HR最喜欢的简历
你可能喜欢目前接触的unity 解析json 有几种:
1.比较流行的listjson(数据对象必须和json一对一)
2.目前unity自带 JsonUtility(不能解析复杂的json)
3.Newtonsoft.Json (推荐可以解析复杂的json,不需要和json字段一对一 ,灵活)
(下载地址:)
listjson 对json 解析提供多样化,可以解析成JsonData,也可以通过JsonMapper 转成自定义的mode数据对象。
listJson功能比较丰富,但是在通过JsonMapper转成自定的对象时,自定义对象的字段要和解析的json字段一对一(json里面的字段,自定义的对象一定要有),不然会解析失败。
string json = @"
""d"":""d"",
""album"" : {
""cc"":""cc"",
: ""The Dark Side of the Moon"",
""artist"" : ""Pink Floyd"",
""tracks"" : [
""Speak To Me"",
""Breathe"",
""On The Run""
""tt"":""tt"",
""tracksOb"":[{""trackOb"":""11""},{""trackOb"":""22""}],
""bb"":""bb""
要对应Json 的mod有 3个
分别是 OO, TestModel,TestModel2
public class OO
public string
public TestM
public string
public class TestModel
public string
public string
public int
public string[]
public TestModel2[] tracksOb;
public class TestModel2
public string trackOb;
以上是要解析的json 和 对应的自定义model数据
1.使用 listJson 解析数据
public static T GetData2&T&(string text) where T : class
T t = JsonMapper.ToObject&T&(table.ToJson());
OO o = GetData2&OO&(json);
运行解析会报错,因为json字符串 包含了很多对象,和字段
而 数据 OO, TestModel,TestModel2对象,并没有全部和json字符串字段一 一对应,listjson解析很严谨。
2.使用 Newtonsoft.Json
public static T GetData2&T&(string text) where T : class
T t = JsonConvert.DeserializeObject&T&(text);
OO o = GetData2&OO&(json);
运行不会报错,完全解析。
3.使用unity自带 JsonUtility
public static T GetData2&T&(string text) where T : class
T t = JsonUtility.FromJson&T&(text);
OO o = GetData2&OO&(json);
运行。有的对象解析不出,会报错
使用Unity自带的解析工具完成Json数据的解析
一、最终解析结果
二、Json数据文件
三、一些坑
Json保存的格式Unicode(UTF-8,无签名),如果有签名会报错
Unity 读写Json数据:LitJSON快速教程
出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明
JSON是一个简单的,但功能强大的序列化数据格式。它定义了简单的类型,如布尔,...
Unity的Json解析&一&--读取Json文件
Unity的Json解析–读取Json文件因为需要做一个外部文件配置,考虑了XML和Json,而5.3版本对Json做了更新,所以就尝试一下。
版本更新的Json部分介绍哦: [Unity5.3版本...
Json在Unity中的使用
本文知识点转自:http://www.cnblogs.com/qiaogaojian/p/6532665.html,请点击链接查看原文,尊重楼主版权。
本文代码案例转自:雨松MOMO,请点击链接查看原...
【Unity&JSON】JsonUtility的多对象读写(1)
原文内容来自:Read from and write to external .json files using JsonUtilities or LitJson
文件Unity 版本号5.3,使用时...
Unity Json生成
System.Json.dll下载如下
链接:https://pan.baidu.com/s/1d3nZY2 密码:1vf7
1.把此dll文件拖入Plugins文件夹中 如果没有...
Unity的Json解析&二&–写Json文件
本文章由cartzhang编写,转载请注明出处。 所有权利保留。
文章链接:http://blog.csdn.net/cartzhang/article/details/
Unity 解析Json字符串
LitJSON使用很简单,两个步骤:1
将LitJSON.dll文件拖动到unity工程中
在unity中的脚本开头引入: using LitJ经过上面的两个步骤,已经可以在脚本中将...
「MojoUnityJson」C#实现超级简单和高效的JSON解析器
MojoUnityJson是使用C#实现的JSON解析器 ,算法思路来自于游戏引擎Mojoc的C语言实现Json.h。借助C#的类库,可以比C的实现更加的简洁和全面,尤其是处理Unicode转义字符(...
Unity5.x 解析Json
本章内容是从API接口请求Json,将其保存在本地,并且从本地读取解析。
废话不多说,直接上干货,我选取的示例接口是一个查询电话号码归属地的功能。
首先我们要向示例接口请求Json数据 ,并...
没有更多推荐了,各种粘贴,原作者见谅,开源有码万岁
LitJSON是一个.NET平台下处理的类库,小巧、快速。它的源代码使用C#编写,可以通过任何.Net平台上的语言进行调用,目前最新版本为LitJSON 0.5.0。LitJson.dll下载:下载地址一:&&(点击直接下载)下载地址二:&下载地址三:&
怎样在Unity3D中使用Json
Unity3D中的javascript有些特异,和普通的javascript差异很大,其中eval就没法在iOS下使用(其实我在桌面版本也没有使用成功过)使得Json解析这种在javascript中非常原生态的事情变得不那么直接了。
直接使用eval后Unity3D给的错误信息很高端,我是没有看懂,应该是没有找到eval这个通用的函数:
Mono: AssemblyAssets/Scripts/Example/JTianLingExample.js(1,1): BCE0172: `UnityScript.Scripting.IEvaluationDomainProvider’ interface member implementation must be public or explicit.
在网上找到了litjson库,通过这个支持.Net的库来曲线救国,折腾了一下,基本搞定。看网上讲litjson的资料很少,并且以C#居多,我这里就记录一下。
LitJson配置步骤
1.讲litjson的源代码中所有.cs文件放到Unity3d的assets中的plugins目录下,当然,在plugins下再建一个目录最好。Unity3D文档描述中plugins目录中的脚本会先运行,这样保证在我们写其他脚本的时候,litjson已经加载并运行好了。不然的话,等着报这种错误吧:Mono: Image addref Mono.Cecil 0×1757740 -& /Applications/Unity/Unity.app/Contents/FramAssets/Scripts/Example/JTianLingExample.js(5,20): BCE0018: The name ‘LitJson.JsonData’ does not denote a valid type (‘not found’).
2.讲源代码放到plugins目录下后,会发现在Unity3d的editor中运行已经正常了,但是monodevelop中写javascript来调用litjson还是会报错误,也就是说monodevelop还是没有先运行litjson。因为C#的代码和javascript的代码在Unity3d生成的 项目中实际在几个不同的Project中,我们需要再配置一下:在MonoDevelop中的Project-&Edit Reference-&Projects中,选择一下引用项(就像VS中添加项目依赖一样)这里我们也会看到,放在plugins目录下的会放在Assembly-CSharp-firstpass中,而一般的脚本会放在Assembly-CSharp目录中。选上Assembly-CSharp-firstpass。
此时再在MonoDevelop中编译代码,顺利编译成功。
LitJson使用方式
1.解析json:
var s : String = '{"name":"jtianling", "phone" : ["135xxx", "186xxx"]}';
var json : LitJson.JsonData = LitJson.JsonMapper.ToObject(s);
print(json['name']);
if (json['phone'].IsArray) {
for (var json_data : LitJson.JsonData in json['phone']) {
print(json_data);
输出名字和两个电话号码,如上所示,其实直接把JsonData当一个Map使用就好了,同时,还有一堆用于判断类型的IsXXX变量。比如,上例中,判断是否是数组的变量就是IsArray。
2.生成json字符串:
var data : Hashtable = Hashtable();
data['name'] = 'aaa';
var array : Array = Array();
array.Add('haha');
array.Add('haha2');
data['good'] =
var data_string : String = LitJson.JsonMapper.ToJson(data);
print(data_string);
输出:{“good”:["haha","haha2"],”name”:”aaa”}
也就是把使用map的过程反过来而已,不详细描述了。
另外,我们读取配置文件的时候常常是从文件中读取,我发现用Unity3D读取文件也值得单独写写,这个下次再讲。
&&JSON(JavaScript Object Notation)&是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。&JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
&&&&&&&&&&&&&&如果曾经使用过Json,就会清楚Json可以分为两个部分:
Json Object(A collection of name/value pairs)
JSON Array&(An ordered list of values)
解析JSON的开源包非常多,在各种场合使用非常广泛,尤其长于网络传输。
本文介绍使用LitJson,并用C#语言来介绍使用JSON,可以在C#应用程序,web程序,还有Unity3d C#脚本中使用。
第一步:先去下载LitJson并导入当前的项目。
第二步:litJson的几个实例方式
&&&&&&&&&&&&& 1.使用JsonData来处理生成json:{"name":"peiandsky","age":28,"sex":"male"}
JsonData data = new JsonData();
data["name"] = "peiandsky";
data["age"] = 28;
data["sex"] ="male";
json1= data.ToJson();
&&&&& 2.对象中嵌套对象:{"name":"peiandsky","info":{"sex":"male","age":28}}
JsonData data2 = new JsonData();
data2["name"] = "peiandsky";
data2["info"] = new JsonData();
data2["info"]["sex"] = "male";
data2["info"]["age"] = 28;
json2 = data2.ToJson();
将上述两种方式的Json解析到JsonData
JsonData jsonData2 = JsonMapper.ToObject(json2);
Debug.Log(jsonData2["name"] + "
" + data2["info"]["sex"]);
使用JsonMapper来处理Json
Player player = new Player();
player.name = "peiandsky";
player.age = 23;
player.sex = "male";
string json=JsonMapper.ToJson(player);
解析4中的json
Player player2 = JsonMapper.ToObject&Player&(json);
使用最原始的方式生成Json
将数组转换成json:["one","two","three","four"]
JsonWriter writer = new JsonWriter();
writer.WriteArrayStart();
writer.Write("one");
writer.Write("two");
writer.Write("three");
writer.Write("four");
writer.WriteArrayEnd();
将复合对象转换成json字符串:{"book":{"title":"android game!","author":"pei","bookdetail":{"pages":429,"about":null}}}
JsonWriter writer2 = new JsonWriter();
writer2.WriteObjectStart();
writer2.WritePropertyName("book");
writer2.WriteObjectStart();
writer2.WritePropertyName("title");
writer2.Write("android game!");
writer2.WritePropertyName("author");
writer2.Write("pei");
writer2.WritePropertyName("bookdetail");
writer2.WriteObjectStart();
writer2.WritePropertyName("pages");
writer2.Write(429);
writer2.WritePropertyName("about");
writer2.Write(null);
writer2.WriteObjectEnd();
writer2.WriteObjectEnd();
writer2.WriteObjectEnd();
Debug.Log(writer2.ToString());
这种方式非常不方便,不建议使用。
在使用LitJson中,建议使用JsonData,JsonMapper来处理Json的编码和解析。
Person[] p_array = { p,p,p};
string json_array=JsonMapper.ToJson(p_array);
Debug.Log(json_array);
JsonData pa = JsonMapper.ToObject(json_array);
Debug.Log(pa.IsArray+"
"+pa.Count);
for (int i = 0; i & pa.Ci++ )
Debug.Log(pa[i]["name"]+"-"+pa[i]["age"]+"-"+pa[i]["score"]+"-"+pa[i]["birth"]);
int age = int.Parse(pa[i]["age"].ToString());
Debug.Log(age);
阅读(...) 评论()最近做项目过程中因为Json文件名写错了一个字母Unity报错,找错误找到半夜,当时为了验错,写了一个小Demo,正好借此总结一下Json.
1.什么是Json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
2.JSON 语法规则
数据在键值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 3.Json的结构
对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
4.Json在Unity3d中的使用
JsonUtility:JsonUtility是Untiy5.3后新增的内容,有时会出现莫名其妙的错误:
JsonUtility.FromJson():把json字符串转成对象.
JsonUtility.ToJson():把对象转成json字符串.
LitJson:LitJson是一个Json的开源项目,这个比较稳定,推荐使用:
JsonMapper.ToObject():把json字符串转成对象.
JsonMapper.ToJson():把对象转成json字符串.
官网下载:http://www.json.org/json-zh.html
放到Unity3d中的Plugin文件夹内
使用的话要注意引入命名空间
纯数组的Json数据比较简单,在这个Demo中Json数据是一个对象,对象内有一个数组.分别需要用到一个Json对象模型(JsonObjectModel)和一个Json数组模型(JsonArrayModel)来接收这两种Json数据:
Json源文件 {
"infoList": [
"panelTypeString": "ItemMessage",
"path": "UIPanel/ItemMessagePanel"
"panelTypeString": "Knapsack",
"path": "UIPanel/KnapsackPanel"
"panelTypeString": "MainMenu",
"path": "UIPanel/MainMenuPanel"
"panelTypeString": "Shop",
"path": "UIPanel/ShopPanel"
"panelTypeString": "Skill",
"path": "UIPanel/SkillPanel"
"panelTypeString": "System",
"path": "UIPanel/SystemPanel"
"panelTypeString": "Task",
"path": "UIPanel/TaskPanel"
JsonObjectModel:Json对象模型 public class JsonObjectModel
//JsonArrayModel类型的列表
public List&JsonArrayModel& infoL
JsonArrayModel:Json数组模型 public class JsonArrayModel
//对应Json中属性 名字要一样
public string panelTypeS
JsonDeserialize:Json解析程序,挂在场景中JsonManager上 public class JsonDeserialize : MonoBehaviour
void Start( )
//获取Json文件
TextAsset jsonData = Resources.Load&TextAsset&("JsonData");
JsonObjectModel jsonObject = JsonMapper.ToObject&JsonObjectModel&(jsonData.text);
foreach (var info in
jsonObject.infoList)
Debug.Log(info.panelTypeString+" "+info.path);
输出结果:6.Demo源代码
链接:http://pan.baidu.com/s/1jHVP9m2 密码:e9h8
Unity3d 编辑器 资源读取操作失败
官方文档没有对PrefabUtility.CreateEmptyPrefab PrefabUtility.CreatePrefab作清晰地描述,实际对传入的路径有以下要求。否则操作失败
相对于工程...
Unity3D Terrain Settings 彻底搞懂 地形详细设置 全实验与解析 (一)Pixel Error
许多Terrain的详细设置,看懂单词也不明白啥意思,这次准备一次性实验完,彻底搞懂!
同时参考Ceeger圣典的翻译、Unity Manual、实验 来进行解释
Base Terrain
Unity3d资源管理分析
http://blog.csdn.net/sgnyyy/article/details/
原创链接:http://blog.csdn.net/ox_thedarkness/a...
没有更多推荐了,

我要回帖

更多关于 unitylitjson 的文章

 

随机推荐