unity3d读取plist或xml文件

Unity制作和接入IOSSDK 主要流程 1.新建xcode的framework工程。 2.导入sdk的.framework包。 3.编写.mm文件,调用并封装sdk功能。 4.把编写好的工程导入进unity,其中包括sdk的.framework和.mm文件 5.按照需求设置.framework需要的依赖和库. 6.某些依赖和库在unity中找不到,需要代码动态设置,比如: string projPath = Path.Co... 阅读详情

转载: http://blog.youkuaiyun.com/lzhq1982/article/details/12949827


说到小提示,其实是后台有个配置文件,里面有很多提示语句,程序以一定的时间间隔随机读取一条,显示在界面上,很简单。这里说到配置文件,花样就多了,以前做cocos2d-x游戏时,用的最多的是plist文件和csv文件,unity用的都是xml和exel文件,那我能用unity也读取plist文件和csv文件文件吗,当然可以,本篇我先说读取plist文件。

其实读取plist文件很简单,因为plist文件就是xml文件,所以只要把文件扩展名改一下就可以了,把.plist改成.xml,然后按读取xml的方式读它就行了,哈哈,不要喷我。所以我重点介绍一下读取xml的方法。

先看一下我的plist文件内容:

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
  3. <plist version="1.0">  
  4. <dict>  
  5.     <key>tips</key>  
  6.     <array>  
  7.         <string>重新挑战已经通过的关卡,也可以获得金币</string>  
  8.         <string>某一关卡无法通过?您缺少的仅仅是英雄和士兵的等级罢了!</string>  
  9.         <string>优先升级城堡等级、兵力恢复速度,会带来意想不到效果</string>  
  10.         <string>选择合适的时机使用英雄技能或城防道具,可以提高获胜几率</string>  
  11.         <string>尽可能一次性出多个士兵,能够最大化提高您的军团战斗力</string>  
  12.         <string>合适的时机使用英雄技能或城防道具,可以提高您的获胜几率</string>  
  13.         <string>获得成就可以获得大量钻石,当您缺少钻石时不妨看看成就列表</string>  
  14.         <string>每个兵种的特殊各不相同,不仅仅是高级兵种才有展示的空间</string>  
  15.         <string>当连续闯关失败时,换一个战术或出兵的方式就能有所转机</string>  
  16.         <string>让士兵与敌人的等级保持一致是一个不错的主意</string>  
  17.         <string>获得成就可以获得大量钻石,缺少钻石的时候不妨看看成就列表</string>  
  18.         <string>战斗中想查看地图上的状态,只需要左右滑动屏幕就行啦</string>  
  19.     </array>  
  20. </dict>  
  21. </plist>  
这是“时空领地”的Loading界面用到的tips,当时用plist做的,用xml文件打开,其实就是个xml,这就好办了,unity已经有成型的读取xml的接口了。先上一下代码吧。

[csharp]  view plain copy
  1. void loadXml()  
  2.     {  
  3.         string filePath = Application.dataPath + @"/Resource/settings/tips.xml";  
  4.         if (File.Exists (filePath)) {  
  5.             XmlDocument xmlDoc = new XmlDocument();  
  6.             xmlDoc.Load(filePath);  
  7.             XmlNodeList node = xmlDoc.SelectSingleNode("plist").ChildNodes;  
  8.             foreach(XmlElement nodeList in node) {  
  9.                 foreach(XmlElement xe in nodeList) {  
  10.                     if (xe.Name == "array") {  
  11.                         int i = 0;  
  12.                         _tips = new string[xe.ChildNodes.Count];  
  13.                         foreach(XmlElement xe1 in xe.ChildNodes) {  
  14. //                          Debug.Log(xe1.InnerText);  
  15.                             _tips[i] = xe1.InnerText;  
  16.                             i++;  
  17.                         }  
  18.                         break;  
  19.                     }  
  20.                 }  
  21.             }  
  22.         }  
  23.     }  
结合上面的配置文件,你会很容易明白怎么用的。Application.dataPath是Assets文件夹目录,先判断文件是否存在,如果存在,创建一个XmlDocument,load加载文件,根节点是<plist>,先循环遍历<plist>的子节点们,这里只有<dict>,然后再循环遍历<dict>的子节点们,这里有两个,一个是<key>,一个是<array>,所以判断Name是否array,是的话创建一个字符串数组,拥有array这么多元素的数组,然后从array里逐一读取出来存到数组里。以后我们就可以在该数组里随机查找了。这段代码在start里调用,只读取一次。记住,不要试图总是查询外部文件,那样效率会很低下的,提前cache起来是不错的选择。


读取完了,我要在loading节目加载了,我用的依然是NGUI,在bottom那里布局个label,不清楚怎么布局的看我这篇文章:unity3d学习笔记(八)--NGUI制作游戏界面,这里截图如下:


其中Label要用中文字体,不清楚怎么创建中文字体的看我这篇文章:unity3d学习笔记(十)--NGUI制作中文字体。


最后程序控制一定间隔读取上面cache的字符串。

[csharp]  view plain copy
  1. private string [] _tips;  
  2. public UILabel _tipsLabel;  
  3. private float _lastTime = 0.0f;  
  4. private const int WAIT_TIME = 2;  
  5.           
  6. void Start () {  
  7.     loadXml();  
  8.     if (_tips != null && _tips.Length > 0) {  
  9.         int idx = Random.Range(0, _tips.Length-1);  
  10.         _tipsLabel.text = _tips[idx];  
  11.     }  
  12.     StartCoroutine(loadScene());  
  13. }  
  14.       
  15. // Update is called once per frame  
  16. void Update () {  
  17.     if (_tips == null || _tips.Length <= 0)  
  18.         return;  
  19.           
  20.     if (Time.time - _lastTime >= WAIT_TIME) {  
  21.         _lastTime = Time.time;  
  22.         int idx = Random.Range(0, _tips.Length-1);  
  23.         _tipsLabel.text = _tips[idx];  
  24.     }  
  25. }  

这样2秒钟界面显示一下tips,我们的loading界面的协同异步终于有意义了。最后上个图吧。
Unity3D集成3D WebView实现网页视频实时视觉处理 在跨平台应用开发中,如何在3D引擎中嵌入并控制网页内容是一个常见的技术挑战。其核心原理是通过浏览器内核渲染引擎将网页内容转换为纹理,实现与原生3D场景的无缝集成。这项技术的价值在于能够复用成熟的Web生态,同时发挥Unity强大的实时渲染和交互能力。在应用场景上,特别适合需要嵌入在线视频、Web应用或进行实时视觉处理的AR/VR项目。通过3D WebView插件,开发者可以轻松获取视频帧数据,结合Shader或AI模型实现人脸识别、滤镜叠加等实时处理,解决了传统方案在跨平台兼容性和深度交互上的痛点。 阅读详情

相关推荐

Unity3D集成AI视觉分析:从架构设计到工程实践

多模态大模型通过融合视觉与语言理解能力,实现了对图像内容的深度解析与自然语言交互。其技术原理基于Transformer架构,通过海量图文对训练,使模型能够建立像素与语义的关联映射。这一技术为应用赋予了“视觉智能”,在游戏开发、AR/VR、数字孪生等领域展现出巨大价值,能够驱动更自然的交互体验。本文以Unity3D引擎为客户端平台,详细阐述了如何通过集成火山引擎豆包大模型等云端视觉API,构建一个可交互的图片分析应用。内容涵盖从客户端UI搭建、图片预处理、网络请求与签名认证,到性能优化、错误处理及跨平台部署的

weixin_33704591的博客 567

unity3d学习笔记(十六)--unity3d读取plist或xml文件

本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢。 http://blog.youkuaiyun.com/lzhq1982/article/details/12949827 前一篇文章介绍了协同异步加载游戏场景,但前台没干活,浪费了。有的游戏在loading的时候会把一些游戏的Tips(小提示)介绍给玩家,我这里说一下是怎么实现的。 说到小提示,其实是

MoMo_KUA_1的专栏 1793

Unity3D集成FFmpeg实现低延迟RTSP视频流播放实战方案

实时流媒体协议(RTSP)是网络摄像头、安防监控等设备进行音视频传输的核心协议,其工作原理基于客户端-服务器模型,通过建立会话并控制媒体流的播放、暂停等操作。在游戏引擎与工业可视化领域,实现低延迟的RTSP流接入具有重要技术价值,它能将实时监控画面无缝融入数字孪生、模拟训练等应用场景,提升系统的真实感与实用性。本文聚焦于通过集成FFmpeg这一多媒体处理框架,在Unity3D中构建一套自主可控的低延迟视频流解决方案,深入探讨了从线程模型设计、缓冲区优化到跨平台编译集成的完整工程实践路径,为开发安防监控可视化

weixin_30410119的博客 689

开源一个基于Unity的Plist解析工具——TextureUnpacker

一、前言 拆解plist大图是对已有项目进行学习(换皮)的必备手段! 在做这个工具之前,我也曾在网上查找过有没有现成的东西,以免重复造轮子。结果发现,有很多用python脚本来做的(不方便,用之前还要搭环境),也有一些界面版的,或是版本太旧(不能拆解新版本texturepacker打出来的图集),或是功能不全(只能简单拆解,无法还原)。更有的竟然挂在淘宝上售卖。。于是就做了这个...

NRatel的博客 8335

Qwen2.5-VL与Unity3D集成:实现实时视觉定位的C/S架构实践

多模态大模型通过融合视觉与语言理解能力,正推动人机交互向更自然、更智能的方向发展。其核心原理在于Transformer架构对图像和文本信息的统一编码与对齐,使模型能理解跨模态指令并生成结构化响应。这一技术价值在于将强大的AI认知能力赋能给各类应用终端,尤其在需要实时感知与反馈的交互场景中潜力巨大。例如,在游戏开发、增强现实(AR)和机器人导引等领域,将视觉模型的物体识别与定位能力集成到实时引擎中,能创造出可响应真实世界动态的虚拟内容。本文聚焦于如何通过客户端-服务器(C/S)架构,将Qwen2.5-VL这类

weixin_34198881的博客 334

支持plist、json、atlas等图集拆解

python脚本实现,支持多种图集格式拆解,前提是需要修改脚本内对应的字段名。目前测试过TexturePacker所生成的几种图集都能完美拆解。

Unity3D研究院之IOS全自动编辑framework、plist、oc代码

Unity打IOS时会先生成一个Xcode工程,如果你需要增加一些第三方的framework那么需要手动一条一条的添加,这太烦了。。而且可能你还需要修改Plist文件,甚至还可能要修改unity自动生成的oc代码,每次打包都要修改的话,那太累了。。这篇文章就是全自动打包的第一步。。建议使用XUPorter,我在它的基础上拓展了两个类,一个用来修改plist,一个用来修改unity生成出来的OC代码...

weixin_33721344的博客 370

cocos plist资源图片文件等

cocos plist资源图片文件等 博客地址:http://blog.youkuaiyun.com/zbjdsbj/article/details/51096734

Unity移动端数据持久化:PlayerPrefs与SQLite4Unity3d选型指南

数据持久化是移动应用开发中的基础技术,它决定了应用状态如何跨会话保存与恢复。其核心原理是将内存中的结构化数据通过序列化等方式写入设备的持久化存储介质。在Unity移动端开发中,数据持久化方案的选择直接影响应用的性能、可维护性和扩展性。对于需要管理复杂结构化数据、支持高效查询和事务保证的场景,嵌入式关系型数据库提供了强大的技术价值。SQLite作为一款轻量级、零配置的数据库引擎,通过SQLite4Unity3d等插件集成,能够高效处理玩家存档、库存系统、本地排行榜等复杂数据模型,支持精确的增删改查和事务操作。

cong84596496的博客 414

TexturePacker图集 plist拆分工具

plist拆分工具,开发游戏的时候,遇到素材的问题,所以用了次软件可以拆分图片,

SAP PP实战:MRP Area怎么用?手把手教你按产线、委外供应商拆分物料计划

本文详细解析了SAP PP模块中MRP Area的功能与应用,指导如何按产线、委外供应商拆分物料计划,实现精细化物料需求管理。通过实战案例展示MRP Area在减少计划冲突、提升库存准确率方面的显著效果,为制造业企业提供可落地的解决方案。

weixin_27015733的博客 432

Unity游戏开发中SQLite4Unity3d插件的数据存储与性能优化实战

在游戏与应用开发中,数据持久化是核心需求之一,尤其对于需要离线存储用户数据、存档和复杂游戏状态的项目。传统方案如PlayerPrefs仅支持简单键值对,难以处理结构化数据;而二进制序列化或自定义文件格式则面临维护困难和查询能力弱的挑战。嵌入式数据库技术为此提供了优雅的解决方案,它能在应用进程内直接运行,无需独立服务器,特别适合单机或弱联网场景。SQLite作为轻量级、零配置、单文件的关系型数据库,凭借其ACID事务支持、标准SQL语法和广泛的平台兼容性,成为本地结构化数据管理的理想选择。其技术价值在于通过关

dieqiao8331的博客 461

嵌入式存储实战:FAL+SFUD+flashDB三件套在STM32上的完整移植指南(附避坑技巧)

本文提供了一套在STM32上完整移植FAL、SFUD与flashDB嵌入式存储框架的实战指南。详细解析了从SPI驱动配置、SFUD设备识别、FAL抽象层分区到flashDB键值数据库初始化的全流程,并分享了关键的避坑技巧与性能优化建议,帮助开发者构建稳定可靠的嵌入式存储系统。

rnn9storyteller的博客 1016

Unity3D AR集成Chord视频分析库:实现实时环境理解与交互

计算机视觉技术通过模拟人类视觉系统,赋予机器感知和理解图像与视频内容的能力。其核心原理基于深度学习模型,能够从像素数据中提取特征、识别对象并分析行为。这项技术的工程价值在于将复杂的算法封装为易用的API,显著降低了开发门槛,使开发者能专注于上层应用逻辑。在增强现实(AR)领域,实时视频分析是实现环境理解与智能交互的关键。通过集成如Chord这样的视频分析库,AR应用不仅能叠加虚拟信息,还能实时解析摄像头画面,识别物体、姿态乃至行为。这种“理解-交互”模式在工业巡检、互动营销等场景中展现出巨大潜力。本文聚焦于

weixin_30522183的博客 389

什么是华为OD?怎么才能通过华为OD机试?华为OD机试怎么刷题?(2024最新华为OD机试E卷更新中)

华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 11万+

2025华为OD面试手撕代码真题目录、八股文真题目录以及面试技巧

1. **华为OD面试技术面准备指南** 2. **华为OD面试技术面常见问题解答** 3. **华为OD面试技术面经验分享** 4. **华为OD面试技术面注意事项** 5. **华为OD面试技术面攻略** 6. **华为OD面试技术面模拟题目与解析** 7. **华为OD面试技术面知识点梳理** 8. **华为OD面试技术面常考**

算法大师! 3万+

Unity3D集成阿里小云KWS:实现游戏本地语音唤醒与实时交互

关键词唤醒(KWS)是一种轻量级的本地语音识别技术,它通过在设备端实时检测特定关键词,实现低延迟、高隐私的语音交互。其技术原理基于音频信号处理、特征提取(如MFCC)与轻量化神经网络推理,核心价值在于摆脱对云端服务的依赖,提供毫秒级响应与离线可用性。这一特性使其在游戏开发、智能硬件、车载系统等对实时性和隐私要求高的场景中极具优势。本文聚焦于将阿里小云KWS技术集成到Unity3D游戏引擎的工程实践,详细解析了从音频流水线构建、跨平台插件开发到性能优化的完整方案,为游戏开发者实现沉浸式语音交互提供了可行的本地

weixin_34268579的博客 382

时间序列—显著相关性和滞后性分析_python

本文讲述了两个时间序列(信号)的相关性分析,可以利用相关性分析进行特征筛选。此外本文还讲了怎么判断时间序列的滞后性的方法。

qq_34229228的博客 2万+

Unity3D集成讯飞语音API:构建智能语音交互系统的完整指南

语音识别(ASR)与语音合成(TTS)作为人工智能交互的核心技术,通过将声音信号转化为文本指令,并反向生成自然语音,实现了人机之间的自然对话。其原理基于深度学习模型对音频特征的提取与模式匹配,技术价值在于极大降低了交互门槛,提升了用户体验的沉浸感与效率。在游戏开发、XR应用、智能硬件及教育软件等场景中,语音交互正成为关键的创新功能。本文聚焦于Unity引擎,详细解析如何通过WebSocket协议与讯飞开放平台API对接,构建一个包含音频采集、实时识别、语义解析与反馈的完整语音交互闭环,并特别探讨了与Soli

weixin_30628077的博客 392

C++软件异常分析概述

本文将详细讲述Windows系统中软件异常的分类以及常用的排查方法,给大家提供一个借鉴与参考。

dvlinker的技术专栏 4万+

Amazon SES 移出沙盒完整指南 & 高通过率模板

AWS SES沙盒模式转正式模式申请指南 申请正式模式需通过AWS审核,常见被拒原因包括邮件用途不清晰、缺少退订机制或发送量不合理。人工申诉需登录AWS Support Center提交服务限额提升请求,填写详细的公司信息、邮件用途及合规措施。 高通过率申诉模板需包含: 公司信息:名称、网址及与AWS的合作情况。 邮件规范:明确类型(交易/营销)、退订链接及退信处理机制。 发送计划:合理预估发送量,确保合规。 关键点:真实信息、用途清晰、退订机制完善、发送量合理。首次被拒可修改后重新提交。

xianyinsuifeng的博客 328

UniHacker 使用教程:三步给 Unity 3D 专业版打补丁的步骤

UniHacker 是一款绕过国际版 Unity 3D 与 Unity Hub 许可证校验的跨平台工具,可在 Windows、macOS、Linux 与 Docker 环境解锁专业版特性。本文说明三步打补丁流程、内部机制与支持的版本范围。 ## ⚡ 快速上手:三步完成 Unity 专业版破解 ### 1. 获取 UniHacker 项目基于 .NET 6 构建(SDK 版本要求见 [glob

gitblog_00451的博客 471

SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

Paul G. Huray发表在DesignCon2010的提出铜箔表面雪球模型的论文。第一部分说明之前的铜箔表面模型只适用于5GHz以内,超过5GHz后就不再准确。

小孟同学的博客 2170
上一篇: unity3d 如何拦截射线碰撞界面的消息
下一篇: Unity3D实现动态加载游戏资源
我是一纸巾
博客等级 码龄12年 14粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值