(个人)AR电子书系统创新实训第四周(2)

使用Json保存数据索引

在成功地配置好服务器并进行了访问测试后,打包上传数据的功能只剩下最后一步需要测试了,那就是对数据关系的组织及保存。

对于AR识别来说,数据的内容主要有两类,一类是用于进行位置判断的目标图像,在这个项目中就是宣传册上的图片;而另一类数据则是用于在AR中显示的虚拟图像数据,可以是图片,视屏或者模型等。AR应用通过图片识别出目标图像后,便会在图像的位置覆盖上相对应的虚拟图形,从而达到“虚实结合”的效果。换句话说,AR应用的一组数据应当包含两个东西,即目标图像和虚拟图像数据。它们之间两两配对,顺序不应打乱,否则当应用扫描到一张图后,显示出来的虚拟内容可能就不是开发者想要的了;此外,相同的虚拟数据可以对应不同的目标图像,但相同的目标图像则不能对应不同的虚拟数据,否则在扫描到目标图像后,程序会不知道显示那个虚拟数据。

上面的话扯得有点多了,总之,此次我的目的是要写出一种数据类型,用以保存,传输和读取目标图像和虚拟图像数据间的关系。在具体的设想中,在将目标图片和虚拟影像导入后,桌面端程序会将两者之间的关系存储在这种数据类型的实例中,并将此数据以某一种格式输出到和图片相同的文件夹中。然后,整个文件夹都会被打包并上传到服务器。当手机客户端下砸并解包数据后,会读取这个数据实例,并依照数据中的配对将相应的图像资源和虚拟影像资源组成组。最开始时,我打算使用字符串的形式来存储数据,也就是写一个专门输出和读入数据的脚本,输出时,脚本会以一定的顺序,将目标图像和虚拟数据的地址用文件流输出到文本文件中;在读取数据时,脚本同样使用数据流读入文本的字符串,然后再根据约定好的规则一段段地解析字符串内容,重新生成数据。在通过网上的查找后,我发现并不需要这么麻烦,因为5.3之后,Unity新增了独特的Json转化函数,可以直接将任意类的实例转换成Json字符串,并支持反向转换,只要是基本数据类型的成员变量,包括数组,都可以顺利地转换到字符串中,这等于是省去了自己约定转换方式的步骤,直奔主题了。

为测试Json的转化功能,我写了一个用于保存数据的类。代码如下:

public class AssetsArrangementInfo{
    public List<string> targetList = new List<string>();
    public List<string> targetType = new List<string>();
    public List<string> srcList = new List<string>();
    public List<string> srcType = new List<string>();
}

在测试代码中,我给targetlist加入了一个元素,将其转换成了Json文本并输出,然后再将Json文本转换回为数据实例,再输出该实例的相应元素:

        AssetsArrangementInfo tmpinfo = new AssetsArrangementInfo();
        tmpinfo.srcList.Add("Test00");
        string jsonresult = JsonUtility.ToJson(tmpinfo);
        Debug.Log(jsonresult);
        AssetsArrangementInfo dstInfo = JsonUtility.FromJson<AssetsArrangementInfo>(jsonresult);
        Debug.Log(dstInfo.srcList[0]);

结果显示:
这里写图片描述
说明两次转换都成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值