unity的坑
- http://dearymz.blog.163.com/blog/static/20565742013341916919/
- 编辑器:
- Hierarchy窗口中是场景中的Game Object列表
- Project窗口中是磁盘上Assets文件夹中的内容,可用来创建Game Object
- 调试:
- 调试用Debug.Log()或者print函数打日志
- 目前完全无法采用VisualStudio进行调试,只能用MonoDevelop。因Unity采用的是Mono运行时引擎而不是CLR,参考Debugging using Visual Studio 2010
- MonoDevelop对Unity的attach调试不能跨dll
- Mono:
- Unity自带Mono版本可能是2.6
- 目前应谨慎考虑采用Mono写需长时间运行的服务器程序
- MonoDevelop:
- MonoDevelop写的源码文件会以UTF8 Unix结尾方式保存
- Unity自带的MonoDevelop和官方MonoDevelop的有区别的,不要升级MonoDevelop
- 实用函数:
- Application.LoadLevel()可以切换场景
- 资源管理:
- 文件打包用的是AssetBundle
- 所有通过Resources类加载的资源必须放在名为Resources的目录中
- All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via the Resources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
- 不同Resources目录同名目录加载规则无法预测!
- Reading Excel Files and Sheets into Unity,用的是直接COM读取excel的方式,没有参与资源管线
- Reading Text Data Into A Unity Game
- 所有需要通过散包方式加载的文件必须通过WWW的方式,加载后可自动识别movie、text、texture和bytes四种格式
- Unity3d 动态读取外部文件,包括对已封装好的内部资源的加载和外部散包资源的加载
- 在Unity3D的WebGame中实现资源动态加载
- 自带GUI:
- Used GUILayout.FlexibleSpace to center your automatic GUILayout
- 引用第三方库:
- Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加载Plugin时遇到的一些问题
- Plugins (Pro/Mobile-Only Feature)
- 团队工作:
- 编译与发布:
- 定制Build流程: Build Player Pipeline
- Unity发布的exe是非托管的,但逻辑dll是放在GAME_Data\Managed下的,代码完全可以反编译
- 没发现Unity编译后的资源目录Game_Data中的文件结构和编辑器中的Project目录有明显的直接对应关系
- 编译后资源都被放到sharedassets*.assets这样的加密文件中,其中*可能是场景编号; Scene文件可能被放到了level*中
- Resources和其他目录不一样,其他目录编译完后会被自动打包合并,而Resources会有一个直接对应的resources.asset文件
- 相同的源反复编译生成的二进制不变
- 添加空场景后Game_Data/mainData发生改变
- prefab和各种资源关联啥的会自动处理的,只把用到的打包
- 编辑器中Import Package但没有真正使用不会对编译结果造成影响
- Game.exe始终是稳定不变的
- 版本管理:
- 即使采用了Force Text选项,ProjectSettings下很多asset文件也还是二进制格式的
- WebBrowser相关:
- 字体:
- Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size. @Unity 3.x Game Development by Exple Beginner's Guide[P201]
- 其他:
- Unity3D实用工具汇总
- Convert unity javascript (unityscript) to C#
- Unity3D屏幕截图
- Unity目前能在手机上做到的效果,其中shader开放可免费使用
- 采用双色半圆拼接饼状图是个技巧
- Unity问题集(不断更新中)
- Unity中写C#脚本要注意的问题(仅限于MonoBehaviour子类)
- Inherit from MonoBehaviour
- Use the Awake or Start function to do initialisation
- The class name must match the file name
- Coroutines have a different syntax in C#
- Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
- Don't use namespaces
- Only member variables are serialized and are shown in the Inspector
- Avoid using the constructor or variable initializers
- Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
- AssertBundle
- Editor扩展脚本:
- Editor脚本是可以用C#写的,编译完后重启Unity生效
- 不要在Editor脚本中采用中文菜单,有一定可能down机
- 如果乱码,需要将文件保存为UTF8格式
- 压缩方式用的是lzma
- Unity的动态下载关卡与动态下载资源
- Unity3D命令行Build,这个对版本制作有用
- 版本控制:
- Unity3d版本控制,哪些文件该放到svn的问题解决
- Unity目前的版本已经把需要svn控制的文件单独归类放到Project Settings里了,现在只需要将Assets和ProjectSettings两目录加入svn即可 @Using External Version Control Systems with Unity
- 必须进行以下设置才可将项目加入到svn管理:
- meta文件为Unity内部使用,不要手工更改,也必须加入svn
- Unity内部是用GUID做文件间引用的
- Force Text可以将场景文件序列化为文本,以利于版本控制,默认为二进制
- Unity资源序列化采用的是YAML
- 场景加载进度条
- 关于Unity3D的协程(Coroutine)
- NGUI:
- Unity3D强大的UI插件(NGUI)
- NGUI: Documentation
- 中文教程: Unity界面插件NGUI基础教程
- 中文教程: Unity界面插件NGUI核心组件说明
- 相同Depth的控件会存在z排序不稳定问题!复杂界面要进行合理的规划
- Unity内建Package简要说明
- Unity引用第三方dll随便拖到项目任何目录就可以了
- 所引用的托管dll必须是net3.5版本以下的(包括)
- 如果托管dll依赖非托管dll,则pc standalone版本的可行,web版的有安全限制,移动版也不可行,甚至System.IO名字空间都是受限的
- protobuf
- protobuf-net要采用net20版本的,不要用mono版的,据说有坑
- protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
- 微端构造AssetBundle的时候不加BuildAssetBundleOptions.DeterministicAssetBundle选项,两次出来的md5码就不一样
- System.Diagnostics.Debug.Assert无法在Unity中使用
- 将扩充代码放到单独目录中用VS开发,这样就可以加UnitTest了
- Debug.Log运行时会将日志输出去到Data目录下的output_log.txt文件(UTF8),省的自己写日志文件了
- 不要打开GAME.sln,而要打开GAME-csharp.sln,可同时由MonoDevelop和VisualStudio编辑
- 调整项目Build Settings后,则可在MonoDevelop/Run/Attach to Process窗口中找到正在运行的游戏以进行attach调试
- protobuf编解码在Unity Editor中运行正常,但单独部署运行抛出TypeInitializationException的问题
- 如果发现Unity Editor中运行正常而单独运行时不正常,可以考虑将Api Compatibility Level改为.NET 2.0而不是其Subset
- 如果发现Unity Editor中运行正常而单独运行时不正常,可以考虑将Api Compatibility Level改为.NET 2.0而不是其Subset
- Terrain:
- Hightmap Resolution会比Terrain Resolution大1
- 移动平台小地形最好用模型,或者将Unity自带的Terrain用插件导出为模型,省性能。Unity Terrain依赖shader 2.0,某些手机不支持,即使导出地图也依赖shader 2.0,自己做地形模型一张贴图即可搞定
- Skybox的设置在Edit/RenderSettings/Skybox Material下,确保Game Overlay按钮选中才可以显示出来
- 要第三人称在场景中漫游,需要将First Person Controller加入到场景
- Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
?
- 支持RPC,整合了RakNet,支持P2P,还提供了房间服务器和NAT穿透服务器,搞不定还有代理服务器。开房间娱乐性质的游戏不用写服务器逻辑
- Anything that uses Rigidbodies or realistic movement should use FixedUpdate, but instead of Update for every frame.
- Unity-4.0.1f2尚不支持Win8-Metro/WinPhone的导出
- 使用Unity进行Web MMO游戏开发技术研究 @张昆 2010-5-5
- 动态下载和加载资源:
- Web MMO需要尽量减少首次下载量,并能在游戏运行中动态加载资源
- 游戏运行时资源下载和加载,Unity Pro支持两种方法: 资源包和资源目录。非Pro版本智能使用资源目录方法。一个资源包是一个外部的资源集合,游戏中可以使用多个资源包,资源包是在发行版本以外存在的。资源目录是一些资源的集合,资源目录被包含在发行版本里面,但是并没有和任何游戏对象有关联。资源目录通过Edit->Project Settings->Player的First Streamed Level With Resource来设定
- 对Web MMO产品的建议
- 主要是资源大小的考虑,资源中,贴图是大头,需要尽量减少贴图使用量。卡通类游戏比较适合
- 由于动态下载和加载资源会一直存在,玩家角色在场景中的移动速度不宜过大,大场景不宜频繁切换。资源动态下载需要占用玩家一定网络带宽
- 使用Unity的准备工作:
- Unity毕竟是一款包含内容和功能很多的游戏引擎。需要花一些时间熟悉其编辑器、代码和开发环境、资源生产流程等主要功能。不建议项目开始前没有一定的准备期
- 动态下载和加载资源:
- Unity3D学习笔记,非常给力的一组学习笔记
- unity的主要使用者是关卡策划和程序员
- 目前Unity对中文的支持不是很好,因此在Unity中尽量不要使用中文,防止出现各种各样莫名其妙的异常
- 如何调整太阳光方向和天空盒太阳贴图方向一致?
- 首先在设计视图中拖动视角,让镜头中心对准天空盒上的太阳
- 然后在渲染设置中临时将天空盒设置为无(为了方便调整Sun的角度,否则天空盒太亮看不清楚)
- 然后选中Sun并使用旋转工具(快捷键E),将光线的方向正对自己
- 然后再将天空盒恢复即可
- 一个好的游戏没有好的配乐和音效,就好像无暇的水晶缺少了灯光的陪衬。而音乐不仅能渲染出玩家攻略游戏时的氛围,还能增加提高玩家对游戏的认知度 @音乐和音效
- 所有Prefab实例的属性都引用自Prefab的预设,当预设属性改变时,对应的实例属性也会相应改变。但当实例的某个属性被手工调整后,即使修改预设的属性值,该值也会以手工调整的值为准
- 随着360和Unity的合作,前者的360安全浏览器预装Unity3d的方案实施会给Unity进军中国市场带来可观的便捷
- Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
- NGUI制作小地图
- Directional light的Shadow Type:
- No Shadows
- Hard Shadow - 影子的轮廓比较清晰
- Soft Shadow - 影子边缘模糊一点,更加逼真
- No Shadows
- 粒子系统:
- Particle Emitter: 只管发射粒子
- Particle Animator: 粒子动画器,负责对发射器产生的粒子进行二次加工,比如使粒子的颜色不断的变化,缩放粒子等
- Particle Renderer: 粒子渲染器,负责将粒子渲染到游戏中,并且可以决定粒子的材质、光影等
- 当选中Prefab的实例时,检视面板上就会显示预制对象菜单:
- Select:在工程面板中快速选取该实例引用的预制
- Revert:将实例修改过的参数全部还原为预制的参数
- Apply:将实例修改过的参数全部应用到预制,此时所有引用此预制的实例会一起受到影响而变动
- yield用法:
- Unity3D使用C#实现Coroutines & Yield
- 所有使用yield的函数必须返回IEnumerator类型(这点和C# IEnumerable标准用法有差异!)
- 所有IEnumerator类型函数必须使用”StartCoroutine”这个函数触发,不能单独使用
- How do I use Yield in C#?
- Overview: Coroutines & Yield
- MonoBehaviour.StartCoroutine
- Unity3D使用C#实现Coroutines & Yield
- 不同颜色的字体需要创建不同的Materials, 其贴图设置为字体贴图, Shader要采用GUI/TextShader
- Unity手册非官方翻译版
- Convert unity javascript (unityscript) to C#
- 只有public field才可进入Inspector窗口, 该功能可用[NonSerialized]特性屏蔽
- 和Inspector窗口关联的public field重命名后Inspector中编辑的值会丢失!
- Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
- public property不会进入Instactor
- enum在Inspector中会自动展示为ComboBox
- 动态调用, 解耦神器:
- 可通过SendMessage方法进行动态方法调用!
- 可采用Find/FindWithTag方法, 用字符串名称的方式直接查找GameObject对象
- 将Prefab直接拖入场景可进行查看
- Where can i find the unityengine xml?, unity官方并未提供引擎dll对应的xml文档, 这对VisualStudio下的自动提示不友好
- WCF & Unity
- Service References的代码可用VisualStudio自带的“添加服务引用”功能,没必要非命令行用mono的svcutil。成功生成后需要将对应的C#代码文件拷贝到Assert下合适的目录中,否则不会参加编译
- 需要从C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷贝到*\Assets\Plugins下的dll有:
- System.Runtime.Serialization.dll
- System.Security.dll
- System.ServiceModel.dll
- System.IdentityModel.Selectors.dll // 该文件也是必要的,否则System.ServiceModel.dll不会被正确引入
- Consuming a WCF Service from Unity3D
- Is it possible to use WCF in scripts?
- Webservices In Unity
- Unity中使用WCF服务小教程
- Unity会自动生成的两种项目文件,*-csharp.sln/*-vs.csproj或*.sln/*.csproj,前者是供VS用的,后者是供MonoDevelop用的,包含了自定义的项目类型*.unityproj
- 不要手工向*-csharp.sln中加入任何project,这会在Unity重新生成后覆盖。可将sln另存为得以解决
- NGUI
- Unity界面插件NGUI基础教程
- Unity界面插件NGUI核心组件说明
- NGUI: Documentation
- 译文: Unity3d 界面插件NGUI
- 调整NGUI“米老鼠”大小:
- TexturePacker is a gui and command line tool to create sprite sheets or sprite atlases
- Request free license
- Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,还可方便自定义输出格式
- unity双开:
- 暂没有内嵌浏览器的支持Embed Web Browser into unity
- The New GUI,将会在随后的unity新版中得到支持
- bitverse GUI库,在移动平台会遇到性能问题,但开发效率要比NGUI高
- Unity脚本周期关系
- 编辑器:
unity的坑的更多相关文章
- 避开unity的坑(转摘)
避开unity的坑(转摘) 以下总结一部分来自经验之谈,一部分来自其他人的分享.总的来讲,unity开发原型和效果.验证想法,确实是无比便利.可能一个月就把核心玩法做得差不多.强大的编辑器功能让我们也 ...
- Unity踩坑记录
最近开始学习Unity,因为会一点儿C#,Delphi,Python,三种都是半桶水都算不上的级别. 首先排除了Python,其次delphi是我最喜欢的,奈何它目前我能了解到的引擎都很老了,dilp ...
- unity爬坑记录
这里记一下平时遇到的unity bug: unity2017最好不要在prefab上面修改它上面的组件参数 最好是拖放到场景之后修改场景内的物体组件参数 完事了apply一下删掉 不这样做的话 可能u ...
- 日常小节----unity小坑记(射线检测固定层级)
unity中射线检测需设定所需层级时,必须加上距离!!! //一条从主相机到屏幕点击点的射线 Ray ray = Camera.Main.ScreenPointToRay(Input.mousePos ...
- Unity爬坑记录-Sprite 相关功能Editor、打包器等无法使用
找了好久的问题,同一个Unity,但是不同项目,一个没问题,一个出现上面情况.
- Unity 好坑的Save Scene
在编辑一个Untiy工程的时候,有很多的教程提到了 "Save Scene",也知道是干么用的.但是,后面打开工程的时候,工程界面是很多东西都不见了,又忘了有个Save Scene ...
- 日常小节----unity小坑记(静态后不可移动和旋转)
当物体被置为静态时,模型网格是无法移动和旋转的,只有碰撞器可以. 也就是会出现当父物体不为静态,子物体为静态时,运行后旋转移动父物体,子物体模型网格不会跟随旋转移动,但子物体碰撞器会跟随旋转移动. 或 ...
- unity踩坑2020-01-21
这几天一直在测试一个类似于传奇的2d界面游戏,目前做的测试为: 人物动作响应,主要是8方向的判断和资源文件精灵的刷新. 学到的知识点: 1,Enum.GetHashCode() 可以得到这个枚举的索引 ...
- Unity 工作经历+近期面试经历
由于团队解散,这最近都在找新工作机会--投简历找工作.已经面试三家了,都没拿到offer,挺失落的.把这种感受记录下来,以作后鉴. 这本质上是一篇面试经历的记录,并不是什么面试攻略,主要是给自己总结的 ...
随机推荐
- hdu 3395
KM裸题 每个鱼都认为自己是雄性,而且会攻击它认为是雌性的鱼,每个鱼只能被攻击一次,被攻击后会产卵(个数是给的两条鱼的值的异或运算) #include<string.h> #include ...
- Android Studio试用总结
Android Studio是一年前Google I/O上推出的一款Android开发IDE,他基于JetBrains’ IntelliJ IDEA,目前还在preview阶段.增强了布局拖拽和预览功 ...
- MVC部署-发布本地数据库(Localdb)时连接异常
解决方法: 找到对应网站的应用程序池, 在 高级设置 里找到 [标识] 选择为 LocalSystem 就可以了,注意文件的路径和连接字符串.
- Aspose.Cells for .NET 8.5.0 工具类
基于 Aspose.Cells for .NET 8.5.0 工具类, Aspose.Cells for .NET 8.5.0 这个自己去CSDN下载里面有破解的,没有破解的导出excel的时候会(A ...
- 让 asp.net mvc 支持 带有+ _ 等特殊字符的路由
最近配置微信 业务域名 时,需要在服务器的根目录中上传一个文本文件,而这个文本文件需要放这样的目录中: 于在就在 服务器目录中创建了对应的文件夹,并将kuPv.txt上传,但是访问时,却怎么也访问不到 ...
- Hashtable键值集合
//Hashtable键值集合 键必须是维一的 类似于索引 Hashtable ht = new Hashtable(); ht.Add(, "中国"); ht.Add(, ); ...
- ionic开发ios app
注意必须是mac系统 1. 首先要安装node环境,Ionic的安装和后续的许多前端工具的安装都依赖于node的包管理器npm. nodeJs环境的安装很简单,去官网下载最新版的NodeJs直接安装即 ...
- Sicily 1156. Binary tree
题目地址:1156. Binary tree 思路: 如何愉快地前序输出呢,要在存储数据的时候根据位置来存放数据! 一开始被自己蠢哭,一直以为第一个输入的就是根结点(例子的祸害呀啊啊啊!!!!),结果 ...
- Mysql 卡死的处理办理
使用用show processlist 命令进去数据库查 或者用phpMyAdmin查也可以 .
- Magento资源问题上CDN方案研究
通过对Magento的了解,发现Magento的资源文件主要分布在media.js.skin三个文件夹里,media文件夹主要包括了系统自带编辑器WYSIWYG Editor 所有编辑器涉及到的资源( ...