本文转自:http://ndark.wordpress.com/2013/05/12/20130511-台北unity开发者研讨会-笔记/ (墙外)

说明

本文单纯只是笔记,若有笔误敬请见谅。

相关参考连结

  1. 你必须知道的Unity引擎知识

  2. Unity Asia Bootcamp 台北场– 线上观看
  3. Unity 今日首次在台举办亚洲开发者研讨会– 巴哈姆特

  4. Unity着色器系统介绍(幻灯片)
  5. Unity 开发者论坛-台北场(Unity ASIA BOOTCAMP TOUR TAIPEI )研讨会
  6. 独家专访:Unity 教育认证与台湾高等教育的深度对谈| Unity IN | 社群✕媒体✕平台
  7. Unity - Mecanim性能与优化

总论

  1. 开发者成长速度与上手速度是Unity在台湾的优势。
  2. 在Facebook与360刘灠器中预设安装Unity Plugin。
  3. 大陸有超過400個Android商城。
  4. 认证培训(新竹教育大学,高应科大等学校)。
  5. 鬼武者魂由Unity開發,Server端使用PHP。
  6. 开发者必须要注意的三阶段:开发-平台-广告金流。

你不可不知的Unity開發技巧

  1. Unity三種網頁發佈的方式:WebPlayer,Flash(效能低下),Chrome NaCl(Native C++,不需要Plugin)。
  2. Plugin的版本分别:Stable,Release,Beta,Alpha。可以修改网页码来指定plugin的下载版本与来源。
  3. Web缓存许可证(收费):“我们提供的统一Web播放器,可以在本地缓存的资产包的特殊扩展这是根据我们的业务开发团队取得了一项协议,授权一般是授权给开发者提供了较大的预期收益和。没有规模较小的基础“。
  4. 如何动态更新Unity产品的Source Code:透过将程式码输出为二维的TextAsset,然后在包装到AssetBundle中。
  5. Unity4已支援动态字型,nGUI2.6才支援动态字型(东亚字体)。(EZGUI目前就已支援-感谢永康ㄉㄉ堤供情报)
  6. GameObject.Destroy不会移除该物件的资源(Mesh,Texture,Material等)。
  7. Scaleform的仅支援Unity3.5.x
  8. 网路伺服器的清单:PhotonElectronSmartFoxuLinkSlimNetSlimIOCP
  9. NavMesh.Triangle()函式
  10. 王者之剑<蓝港在线>使用Unity开发的2D游戏。
  11. 开发2D游戏的插件:Sprite ManagerEx2D
  12. Unity Cache Server是开发团队用来在不同平台(资源)发布时的加速方式。
  13. Asset Server已不建議使用。
  14. 疾风,91都会自己开发对Unity的金流SDK。
  15. 透过设定优化发布的产品档案大小。

移动平台优化要点

  1. 每个动态物件(角色)的三角形面数在300到2000之间。
  2. 每个动态物件(角色)的Skinned Mesh Renderer仅用一个。
  3. 每个动态物件(角色)的材质数只用一个。
  4. 每个动态物件(角色)的骨架限制在30根以下。
  5. 使用Dynamic Batching合并那些杂类的动态物件。
  6. 静态物件设定为Static,方可进行Static Batching。
  7. 在3.5使用静态物件时移除Animation的组件。
  8. 地形(Terrain)的初始解析度設定為257以下。
  9. 地形(Terrain)筆刷貼圖數目控制在4以下。
  10. 贴图解析度大小控制在1024以下。
  11. 3D游戏开启Mipmap会增加记忆体但是可加速效能。
  12. 貼圖uv控制在0~1。
  13. 音乐档案使用ogg/mp3,短音效使用wav。
  14. 光源使用Light Map/Light Probe来取代动态光源。
  15. 使用方向光。
  16. Pixel Light控制在1~2。
  17. 控制摄影机的z-near与z-far平面。
  18. 设定物件的剔除距离。
  19. 小物件又很远得时候就不要画。
  20. 粒子系统将粒子总数控制在200以下。
  21. 粒子系统每个发射器发射粒子控制在50以下。
  22. 粒子的大小越小越好。
  23. 非常小的粒子去掉alpha channel。
  24. 不要开启粒子的碰撞。
  25. 碰撞類型不要使用Mesh Collider。
  26. 減少使用Animation組件。
  27. 不缩放的动画,去除Scale Curves的参数。
  28. 若只使用一个AnimationClip,就使用Unity 3.5的动画系统。
  29. 使用Macanim(Unity 4的動畫系統),要搭配使用Body Mask。
  30. IK選用Generic Mode。Humanoid Mode在Android上會耗費嚴重的效能。
  31. 渲染时减少使用Alpha测试与alpha混合。
  32. Draw Call Batching分为Static与Dynamic。后者点数控制在900下,若包含Position,Normal,UV,则是300。
  33. 使用Texture Packing将不同物件的材质变为相同,但必须手动修改UV。
  34. 使用遮挡剔除时谨慎设定谨慎设定封堵器(墙)与Occludee的角色。设定PVS只,PV和动态对象,自动生成门户(会改变的门)。
  35. 程式码,使用类别变数来暂存指标。
  36. 设定Fixed Delta Time在0.04到0.067之间。
  37. IOS发布时使用的快速和异常不支持的发布形式。
  38. Shader减少使用数学函式,减少使用Discard。Vertex使用Float,TextureUV使用Half,颜色与光使用Fixed。
  39. 在PowerVR的硬体下有时候使用两个Vec2反而会比较快。
  40. 使用Profiler。
  41. 使用Manager的架构来控制物件会比把每个物件都挂上脚本效率高。

资产包

  1. Resource这种读取资源的形态(有2G限制)会慢慢移除,统一改用Asset Bundle(可离线创造)
  2. Web缓存只能放资产包。
  3. Asset Bundle建出之后是有相容性的,ios与android的Asset Bundle与其他平台互不相容。
  4. BuildPipeline.BuildAssetBundle()是用来建立多个资产的资产包。
  5. BuildPipeline.BuildStreamedSceneAssetBundle()则是用来建立多个场景的资产包。
  6. BuildAssetBundleOptions.DeterministicAssetBundle来建立对资产的杂凑的ID做增量发布。
  7. 资产 assetBundleObj = WWW.AssetBundle->使用中的资产包。 新 捆绑可再进行加密动作。AssetBundle.Load() - >载入资产。
  8. 卸載流程:
    GameObject.Destroy() AssetBundle.Unload (false)只會卸載WWW.AssetBundle,AssetBundle.Unload(true)則會卸載WWW.AssetBundle以及相關資源。true的作用相較於使用false再使用Resources.UnloadUnusedAssets ()作用並不相同。 把相同的資源基底打包為Asset捆绑 使用BuildPipeline.PushAssetDependencies()来建立资产包之间的关连性。
  9. 范例1:把共通资源打包。
    Push
    Build共通资源包
    Push
    Build物件包1
    Pop
    Push
    Build物件包2
    Pop
    Pop
  10. 范例2:把Level所使用的资源也做成依赖形式。
    Push
    Build Level1
    Push
    Build Level2 (依赖于Level1)
    Push
    Build Level3 (依赖于Level2与Level2)
  11. 范例3:把场景包依赖于共通资源包
  12. 将设定各资源包依赖关系的XML设定为ScriptableObject并打包到Asset Bundle内
  13. 将场景切割为Asset Bundle的方式,等分,如切成九宫格。
  14. 将场景切割为Asset Bundle的方式,分大物件,中物件,小物件。让大物件先读入先显示。
  15. WWW.LoadFromCacheOrDownload()可设定版号。
  16. WWW.LoadFromCacheOrDownload的crc产生方式可透过错误使用同一个函式来产生真确值。
  17. 程式碼的加密過程:Assembly->Byte->TextAsset->加密->Asset Bundle->加密->TextAsset->Asset Bundle。
  18. 使用native dll来保护重要程式码,但Web应用不能使用dll。

统一着色器系统

  1. 透过Shader Name就会自动产生选择Shader的架构。
  2. SubShader可视为真正的Shader,由上而下执行。
  3. SubShader的Tag表示如何执行:可指定执行的顺序。
  4. SubShader的Tag表示如何表現。
  5. 著色方式Vertex Lit:快,限制多。
  6. 着色方式Forward:将灯光分为最重要+不重要以及其他重要。区分方式可手动,也可以依照强度与方向来自动决定。
  7. 着色方式Deferred:手机不能使用,也不支援透明。
  8. CG/HSSL会被转译为GLSL。
  9. 使用基本Shader会需要写132行的程式,使用Surface Shader来做隐藏简化:标明surfae code与light code。
  10. #pragma debug可以将隐藏的程式码显示在程式码中。
  11. 透过user define keyword将参数传入shader中。

台北Unity开发者研讨会 笔记的更多相关文章

  1. 写给Unity开发者的iOS内存调试指南

    0x00 前言 工作的过程中,常常会发现有小伙伴对Unity的Profiler提供的内存数据与某些原生平台Profiler工具,例如iOS系统和Xcode,所提供的内存数据有差异而感到好奇.而且大家对 ...

  2. Unity Shader学习笔记-1

    本篇文章是对Unity Shader入门精要的学习笔记,插图大部分来自冯乐乐女神的github 如果有什么说的不正确的请批评指正 目录 渲染流水线 流程图 Shader作用 屏幕映射 三角形遍历 两大 ...

  3. Unity sqlite学习笔记一

    1.SQLITE的常识 SQLite是一个开源免费的数据库,一般用于嵌入系统或者小规模的应用软件开发中,你可以像使用Access一样使用它. sqlite的主要优点:零配置(Zero Configur ...

  4. Unity ECS 视频笔记

    视频摘要 本文视频资料:使用Entity Component System开发<快乐的Minecraft>游戏 使用Unity2018及以上版本才有ECS功能. 本文是看视频的一些摘要. ...

  5. unity 3D 学习笔记

    1.父对象的初始位置设,即刚开始的空对象的根节点位置应当设置成(0,0,0) 这样设置可以避免以后出现奇怪的坐标. GameObject实际上就是一些组件的容器. unity 使用公用变量原因是,在U ...

  6. Unity依赖注入(笔记)

    一.介绍 控制反转(Inversion of Control,简称IoC):整洁架构思想,不允许内部获知外部的存在,这就导致了我们必须在内层定义与外层交互的接口,通过依赖注入的方式将外层实现注入到内部 ...

  7. 从0开始学习Unity的学习笔记(I 界面学习和简单模型拼装)

    先给一个大致今天学习的图,然后后面是细节 1.下载Unity :官网下载需要版本 2.Unity安装:一定不要有中文路径:一台电脑可以安装不同版本的Unity,但是要安装在不同的文件夹下: 3. 新建 ...

  8. Unity Shader学习笔记 - 用UV动画实现沙滩上的泡沫

    这个泡沫效果来自远古时代的Unity官方海岛Demo, 原效果直接复制3个材质球在js脚本中做UV动画偏移,这里尝试在shader中做动画并且一个pass中完成: // Upgrade NOTE: r ...

  9. Unity AssetServer小笔记

    普及一下Asset Server知识: Unity的Asset Server,其实就是一个纯PostgreSQL数据库.Unity操作Asset Server,就是一个数据库客户端操作,但是Unity ...

随机推荐

  1. RCA端子颜色(红、白、黄)

    RCA端子(红白黄)的作用: 黄:视频 红:左声道 白:右声道 RCA为两口插头,红色代表左声道,白色为右声道,3.5(AUX口)同样为立体声接头,虽然它只有一个端口,同样也具有左右声道分开传输的功能 ...

  2. C++调用C#dll类库中的方法(非显性COM)

    一般在网上搜C++如何调用C#的函数,出来的结果都是做成COM组件,但是这种方法dll安装麻烦,需要注册COM组件,需要管理员权限,调试麻烦,经常需要重启机器,反正有诸多不便. 然后在看<CLR ...

  3. 转:Web App开发入门

    WebApp与Native App有何区别呢? Native App: 1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C. 2.更新体验较差.同时也比较麻烦.每一次发布 ...

  4. Android 在内部存储读写文件

    文件读写操作* Ram内存:运行内存,相当于电脑的内存* Rom内存:内部存储空间,相当于电脑的硬盘* sd卡:外部存储空间,相当于电脑的移动硬盘在内部存储空间中读写文件>小案例:用户输入账号密 ...

  5. Core Data的简单用法

    #import "ViewController.h" // 第一步:引入头文件AppDelegate #import "AppDelegate.h" #impo ...

  6. Spring中配置数据源的4种形式(转)

    原文http://blog.csdn.net/orclight/article/details/8616103       不管采用何种持久化技术,都需要定义数据源.Spring中提供了4种不同形式的 ...

  7. iOS--页面间的代理传值(属性、代理(委托)、代码块、单例、通知)

    (一)属性传值 (二)代理(委托)传值 代理传值 适用于 反向传值 (从后往前传) 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewController)中 1.2 创建协议类型的 ...

  8. 我为什么用 SQLite 和 FMDB 而不用 Core Data

    凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加入你的组或者需要别人接手你的项目的时候,这点很重要.更重要的是,不值得花时间和 ...

  9. 关于C语言中单双引号的问题

    代码 #include<stdio.h> int main() { if ( "{" =='{' ) printf("True\n"); else ...

  10. UVa 107 - The Cat in the Hat (找规律,注意精度)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...