原文链接

基本对象处理 Basic Object Handling

当你为 Unity 项目从 articy:draft 中导出数据时,articy importer 插件将能够根据你的数据生成数据库,并为所有数据创建C#类型和属性。本篇文章将介绍如何获取这些数据。

本篇文章将包含如下内容:

  • 简单对象获取 Simple Object Access
  • 进阶对象获取 Advanced Object Access
  • 相关连接 See Also

简单对象获取 Simple Object Access

获取 articy 对象的最基本方法是直接从数据库中查询:

// 通过技术名称获取对象
ArticyObject manfred1 = ArticyDatabase.GetObject("Chr_Manfred");

使用 ArticyDatabase 类,我们通过 GetObject 方法和技术名称 "Chr_Manfred" 获取到了一个对象。返回的对象是 ArticyObject ,是数据库中所有对象的基本类型。

同样也能手动转换 ArticyObjec,也可以也可以要求GetObject方法返回特定类型:

// 通过确切类型和技术名称获取一个对象
Player_Character manfred2 = ArticyDatabase.GetObject<Player_Character>("Chr_Manfred");

该案例中,我们提供了 Player_Character 这一模板名称,返回的对象将被自动地转换为该类型。变量 manfred2 现在包含着对 Player_Character 类型的实体的引用,我们可以访问其所有属性:

// 我们可以访问所有导出的属性
Debug.Log( manfred2.Text );
// 当然也可以设置属性
manfred2.DisplayName = "Advanced Manfred 2.0";

技术名称(Technical Name)并非是查询数据库的唯一途径。另一个办法是使用 articy 对象独有的对象id:

var manfred3 = ArticyDatabase.GetObject(0x1000001000010C6);
// ↑以十六进制表示
// ↓以十进制表示
var manfred4 = ArticyDatabase.GetObject(72057598332899526);

请注意如何写十六进制(如articy:draft中所示)或十进制,这是将id打印到log或将其存储在int中时显示的。

注意该插件包含将对象的ID转换为其十六进制字符串表示法的方法,反之亦然。 参见ToHex(Int64)

Articy并不要求技术名称独一无二。事实上,完全可以把一个名字分配给多个对象,并使用技术名称获取到所有同名对象。

List<ArticyObject> allManfreds = ArticyDatabase.GetObjects("Chr_Manfred");

在这种情况下,要获取特定对象,请使用具有唯一 id 的 GetObject(id)。

注意由于出错的可能性很高,建议不要为articy:draft的多个对象故意分配相同的技术名称。 要将某些对象组合在一起,请使用自定义模板并按其类型查询对象。 有关如何按类型查询对象的信息,请参见基本对象处理。

进阶对象获取 Advanced Object Access

有时你会想获取某个特定类型的所有对象。 此时可使用ArticyDatabase包含的GetAllOfType<TObject>()方法。任何标准的articy对象类型都可用于指定,使用自定义的模板亦可。

var allmyItems = ArticyDatabase.GetAllOfType<Item>();

为进一步过滤返回的道具列表,还可使用LINQ指定其他条件。 请参阅Microsoft的LINQ文档,了解如何编写LINQ语句。 下面的示例仅选取了价格高于100的item类型对象。

var allExpensiveItems = ArticyDatabase.GetAllOfType<Item>().Where( aItem => aItem.Template.Item.GoldCost > 100).ToList();

相关连接 See Also

Reference
ArticyDatabase
ArticyRef

Other Resources
Demo Project: Maniac Manfred
Scripting and how to use it
Object Templates

c#获取对象的唯一标识_Articy Importer Guide - 01 基本对象处理相关推荐

  1. iOS获取设备的唯一标识的方法总结以及最好的方法

    各种获取设备唯一标识的方法介绍 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果iOS设备的唯一识别码,它 ...

  2. iOS获取设备的唯一标识的方法

    各种获取设备唯一标识的方法介绍 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果iOS设备的唯一识别码,它 ...

  3. 格式android id,android 获取APP的唯一标识applicationId的实例

    使用getIdentifier()方法可以方便的获各应用包下的指定资源ID. 方式一 int indentify = getResources().getIdentifier("com.te ...

  4. 登录实现并获取到用户唯一标识

    正文: 功能:登录实现并获取到用户唯一标识 官方文档地址:可以先看完我的文章再看官方地址 实现步骤:1.调用微信API wx.login()得到code  2.把得到的code传给后端,在后端请求 h ...

  5. Android app 标签,android 获取APP的唯一标识applicationId的实例

    使用getIdentifier()方法可以方便的获各应用包下的指定资源ID. 方式一 int indentify = getResources().getIdentifier("com.te ...

  6. uni-app获取设备的唯一标识

    uni-app根据不同手机平台获取设备的唯一标识,由于获取的方式是异步的,当前页面执行不一定能拿到.建议存缓存,其他页面可以用调用缓存的方式获取,不存在的话在执行一下方法获取,确保保证一定能获取的到. ...

  7. 【转载】设备唯一标识方法(Unique Identifier):如何在Windows系统上获取设备的唯一标识

    设备唯一标识方法(Unique Identifier):如何在Windows系统上获取设备的唯一标识 原文地址:http://www.vonwei.com/post/UniqueDeviceIDfor ...

  8. 【文件md5值查看方法详解】:如何获取文件的唯一标识?

    [文件md5值查看方法详解]:如何获取文件的唯一标识? 在日常工作中,我们经常需要检查文件是否被篡改或者验证文件的完整性.而文件的MD5值就是一个很好的选择,因为它可以作为文件的唯一标识.那么,如何获 ...

  9. 获取Android设备唯一标识

    很多情况下,需要将APP和设备进行绑定,以保证用户不会无限制的注册或发送请求.然而,Android设备并没有绝对的唯一标识. Android提供了多种方法来获取所谓的唯一标识.常用的有六种. (1)A ...

最新文章

  1. AI算法效率每16个月提速一倍,算力革命超越摩尔定律
  2. Windows安装Zookeeper和Dubbo(单机版本)
  3. iview-admin webpack打包总结的几个问题
  4. 数据库的定义、模型 和 模式
  5. db2 最近三个月_昙花一现,PA、PC月跌1800,通用料一蹶不振,救不起的塑市!
  6. 功能强大的Windows PowerShell
  7. Fundebug是这样备份数据的
  8. Lucene6.5.0 下中文分词IKAnalyzer编译和使用
  9. [SQL] 常用查询脚本
  10. android端与windows端通信中文乱码问题
  11. Go搭建REPL环境
  12. JavaScript高级程序设计(第3版)
  13. 字符打印流(PrintWriter)
  14. Win7 64位操作系统连接HP 1010打印机完美解决方案
  15. EXCEL计算时间差并制作折线图
  16. 学习淘宝分享出来的链接web检测打开原生App
  17. imp报IMP-00010,IMP-00013错误
  18. Spreadsheet
  19. sql trace基础
  20. 王者荣耀-数模论文分享(虽然结果我自己都不信)

热门文章

  1. 在ASP.NET页面中实现数据柱状图
  2. 数字音视频技术:音频中的一些概念(采样率, 位深度, 声道数, Sample/Frame/Packet)
  3. 使用ffmpeg循环推流(循环读取视频文件)推送RTMP服务器的方法
  4. wasm + ffmpeg实现前端截取视频帧功能
  5. pycharm中使用anaconda中python环境
  6. MATLAB排列组合函数--nchoosek
  7. Arduino/Microduino与OneNet平台及web服务器端的交互
  8. c语言程序二级考试题,2016年计算机二级考试C语言程序设计真题
  9. 怎么样用 Python 实现读写锁
  10. Nginx 实现AJAX跨域请求