unity3d的资源使用是一件十分费心的事,通常都需要自动化的手段来检查与处理资源,以保证游戏性能不会因资源规格的变化出现剧烈波动。

一般来说贴图、模型、动作、特效、prefab是最常见的几种需要按规范设置的资源,最简单的方式是对每一种资源单独写一套处理,这种方式对于规则固定的情形比较适合,但如果项目很复杂,经常需要对不同用处的资源进行不一样的处理,那就会很麻烦。比如虽然是贴图,颜色图与法线图的处理不一样,光照图又是另外一套规则。按用处,也可能不一样,比如玩家用的图和Npc的不一样,特效的、UI的又是另外几套等等。另外,还可能有一些特定的资源,没法按通用规则处理,而必须针对性的进行个性化特殊设置。

这时候,一种可配置的资源处理方式会比较好。很自然的,我想到用DSL元语言来描述这种配置。

考虑前面资源设置的过程,有两个关键,一个是找出可以使用同一种设置方法的资源,一个是不同的资源设置方法是可配置的。所以资源的处理过程可以分两步完成:

1、先得到一个资源集合;

2、逐一用同样的方法处理。

这就又很像gpu shader了,如果我们是用一个脚本片断表示处理方法,处理过程就是对资源集合的每个资源执行一次脚本片断。如果不需要设置只是检查,也是类似的过程,只是输出不是修改后的资源,而是检查结果。

和《基于DSL元语言的地形生成》一样,这个脚本也是描述性+解释执行结合的。也就是采用描述性的方式得到资源集合,然后逐一对各资源调用脚本片断进行设置或检查。实际上DSL相对于通用语言的最大的不同就是允许定制这种一半描述一半解释执行的脚本。我们以后还会经常看到这样的应用形式。

基于DSL元语言设计的资源处理脚本类似下面的样子:

一个资源处理脚本分为三部分,input为描述性部分,指明了脚本处理的资源类型(用文件扩展名识别),以及用于进一步过滤资源的一些属性,资源处理工具可以为这些属性生成交互界面,允许使用者在处理时指定。filter部分是用于过滤资源的脚本片断,它可以使用input部分由使用者指定或默认的属性值。process部分是用于设置资源的脚本片断。

这里贴个资源处理工具的截图:

【扩展】

这种处理方式很显然可以用于unity3d之外的其他资源,比如策划配表的检查(此时数据行是处理的单元)。

这里有一些实际的资源设置脚本与资源检查脚本。

对应的资源处理工具的实现在这里,这个代码量还是比较大的,就不贴出来了。

unity3d 自动变化大小_一种可扩展的Unity3d资源检查方式相关推荐

  1. unity3d 自动变化大小_【Unity游戏开发】AB学习(三)--加载AB和实例化操作对应的内存变化...

    了解一下加载AB和实例化操作对应的内存变化,有助于我们更好的理解内存管理 很经典的对称造型,用多少释放多少. 这是各阶段的内存和其他数据变化 说明: 初始状态 AssetBundle.Load文件后 ...

  2. unity3d 自动变化大小_自动做游戏(1),自动生成人物侧面图

    文 @罗培羽 效果 游戏美术成本很高,如果能够应用一些深度学习的方法,让机器自动生成美术资源,那么游戏开发将会变得简单.尝试制作一个应用,根据人物正面图自动生成侧面图.效果如下图,对于像素类图片,效果 ...

  3. java对接自动充电桩_一种便于自动对接的充电接头的制作方法

    本实用新型涉及一种充电接头,具体是一种便于移动机器人自动对接的充电接头. 背景技术: 现有的充电接口大部分都需要手动对接进行充电,如图1.图2分别为汽车和叉车的充电接头.当仓库内有大量设备需要充电时, ...

  4. usb扩展坞同时接键盘鼠标_一种带有扩展坞功能的一体式键鼠的制作方法

    一种带有扩展坞功能的一体式键鼠的制作方法 [技术领域] [0001]本实用新型涉及加固计算机技术领域,具体涉及一种带有扩展坞功能的一体式键 ea啦O [背景技术] [0002]随着加固计算机技术的不断 ...

  5. unity3d 加载iges_浅析几种三维模型格式导入Unity3D的途径

    浅析几种三维模型格式导入Unity3D的途径 作者:未知 摘 要:Unity3D是现阶段应用最为广泛.功能最为强大的虚拟现实软件之一,但是引入的三维模型通常是由不同软件形成的.现阶段,市面上众多三维建 ...

  6. teradata查看正在运行的进程_一种基于greenplum数据库的状态检查及性能监控工具.doc...

    一种基于greenplum数据库的状态检查及性能监控工具 开发中心 导师责任制结业论文 题目:一种基于GreenPlum数据库的状态检查及性能监控工具 学员姓名: 导 师: 部 门: 非功能集成测试处 ...

  7. 改纸盒大小_一种可调节大小的包装纸箱的制作方法

    本实用新型涉及包装技术领域,更具体地说,涉及一种可调节大小的包装纸箱. 背景技术: 包装纸箱是用纸制品制造的,用于包装各类物品的用具,分单坑(3层)/双坑(5层)/三坑(7层)/四坑(9层)纸箱,纸箱 ...

  8. textview根据文字行数自动变化大小

    http://www.cocoachina.com/ios/20150126/11023.html 转载于:https://www.cnblogs.com/angongIT/p/4395451.htm ...

  9. dump文件_一种比Xml更敏捷的配置方式,Python Yaml 配置文件解析模块详解

    为什么选择Yaml Yaml的可读性好.扩展性好. Yaml和脚本语言的交互性好. Yaml使用实现语言的数据类型. Yaml有一个一致的信息模型. Yaml易于实现. Yaml试图用一种比Xml更敏 ...

最新文章

  1. 当代的设计潮流是什么_12月,潮流咖的出行攻略!
  2. 为什么 PHP 中 this 和 self 访问变量的写法不一样?
  3. 0-1背包问题(C语言)
  4. java ranger rest_使用REST
  5. python3.7.1使用_在不影响使用python3.7.1的功能的情况下,是否可以从python代码中删除所有的ufuture_uu语句?...
  6. mxnet创建新的操作(层)
  7. 接口定义【领域对象】
  8. NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(二): NHibernate数据访问层实现
  9. YAML_15 include and roles
  10. 一起学WindowsPhone7开发(二十六. Advertising)
  11. #!/usr/bin/env python作用
  12. linux网页视频黑边,ffmpeg去除视频黑边命令
  13. Allegro学习笔记:Allegro快速入门之一--查看BRD Layout
  14. 【比赛题解】第十一届蓝桥杯青少组省赛(中级组)详细题解
  15. Linux接蓝牙音响无声音,win10蓝牙音箱没有声音怎么办_win10蓝牙音响连接成功没声音处理方法...
  16. 基于RFID技术下的化工厂定位系统,包含化工厂人员定位解决方案-新导智能
  17. 让 git输出颜色变成彩色的方法
  18. 13 Scrapy框架介绍
  19. 快手、抖音、微视类短视频SDK接入教程,7步就能搞定
  20. 彩虹QQ显IP v2.5 正式版支持QQ2008正式版

热门文章

  1. html5 摄像头拍摄视频教程,html5实现调用摄像头并拍照功能
  2. Android Studio生成aar包的方法以及解压aar包的方法
  3. delimited mysql_在MySQL中存儲逗號分隔的數據
  4. python中反斜杠b_Python bytes 反斜杠转义问题解决方法
  5. picker封装 uniapp_uniapp自定义picker城市多级联动组件
  6. 滴滴开源首次发布年度报告
  7. nginx通过lua从日志中获得请求响应体
  8. Docker镜像的多平台架构支持
  9. powerdesigner奇淫技
  10. centos虚拟机根目录空间分配