在 unity3d 中使用 LitJson

Posted

技术标签:

【中文标题】在 unity3d 中使用 LitJson【英文标题】:Using LitJson in unity3d 【发布时间】:2011-03-08 22:29:11 【问题描述】:

2 个问题。

1) 在 javascript 中编写脚本时是否可以按原样使用 LitJson 库?这确实是一个关于能够在 javascript 源代码中使用 c# 源代码的普遍问题。

2) 我是 C# 开发新手。我似乎无法启动并运行 LitJson。以下代码抛出此错误:An object reference is required to access non-static memberLitJson.JsonReader.Read()'`

using UnityEngine;
using System.Collections;

public class Loadr : MonoBehaviour 
string url= "http://developer.echonest.com/api/v4/artist/images?api_key=N6E4NIOVYMTHNDM8J&id=ARH6W4X1187B99274F&format=json&results=1&start=0&license=unknown";
void  Start ()
    WWW www = new WWW(url);
    print(www.text);
    Object a = LitJson.JsonReader.Read(www.text);
    print(a.response.status);

    


有什么想法吗?

【问题讨论】:

【参考方案1】:

我已经使用了 Unity3D 中的一堆 Json 库。我发现的唯一一个没有奇怪的序列化/反序列化怪癖,并且在 ios、WebPlayer 和编辑器中始终如一地工作的是JsonFX JsonSerializer 1.4。

也就是说,我认为您的问题是您必须先实例化 JsonReader,然后才能使用它的方法。

这样的事情可能会奏效:

var reader = new LitJson.JsonReader();
Object a = reader.Read(www.text);

编辑:

哎呀,我跳过了你的部分问题。您应该能够使用 UnityScript 中的任何托管程序集,就像使用 C# 一样。您可以使用import,而不是使用using 包含命名空间。之后代码几乎与 C# 版本相同,除了 UnityScript 定义类型的方式 (var blah : Type = YadaYada();)

【讨论】:

【参考方案2】:

嗯。你试过Jayrock吗?它的代码看起来不错,但没有任何文档可言,作者很满意地保留它。

【讨论】:

【参考方案3】:

关于问题

    如果要在c#脚本中访问js代码,则应将js代码放在Plugins文件夹中,反之亦然。

    Object a = LitJson.JsonReader.Read(www.text); 我认为 JosnReader 不是一个静态类,你应该实例化一个新的 JsonRead 对象,然后你可以访问 Read(string data) mehotd

【讨论】:

【参考方案4】:

查看 Unity3D 的 LitJSON 分支:


实际上 LitJson 有一些问题,并不总是按预期工作,所以我创建了一个简单的 JSON-Lib,可以处理所有 Unity3D 类型、枚举和任意类。

在 GitHub 上找到它:Tiny-JSON

你可以很简单地使用它:

// encode
Animal a = new Animal(4);
string json = Json.Encode(a);

// decode
IList<Animal> a = Json.Decode<IList<Animal>>("[\"legs\":4, \"legs\":2]");

【讨论】:

以上是关于在 unity3d 中使用 LitJson的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D日常开发Unity3D中使用数据类保存数据,持久保存数据数据存放在跨场景调用数据类

在Unity3d中使用Google.ProtocolBuffers

如何在 Unity3D 中使用 NVIDIA FleX 制作软体果冻球?

如何在unity3D游戏引擎中写波斯语?

在vue中使用unity3D实现webGL将要呈现的效果

Unity3D日常开发Unity3D中使用数据类保存数据,持久保存数据数据存放在跨场景调用数据类