最近用unity的Profiler对公司项目进行内存profile,发现一些问题,记录一下. 用Memory Area的Detailed View,用法见:http://docs.unity3d.com/Manual/ProfilerMemory.html 一, 可以看到Not Saved->RenderTexture下有两个ImageEffects Temp.想不出它们是因何而来. 注:在profile过程中直接点Take Sample才容易看到ImageEffects Temp,如果先点曲线…
Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大. Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的. 其实场景里所有静态的对象也有这么一个加载过程,只是Unity3D后台替你自动完成了. 详细说一下细节概念:AssetBundle运行时加载:来自文件就用CreateFromFile(注意这种…
转自:https://www.cnblogs.com/zsb517/p/5724908.html Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大. Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的. 其实场景里所有静态的对象也有这么一个加载过程,只是Unity3D后台替你自动完成了. 详细说…
[Unity内存优化] 1.在Update方法或循环中,少用string类,因为string类的每次操作都会调用new生成新字符串对象.用StringBuilder代替string,StringBuilder基于固定Buffer操作,从而避免了内存的分配.  例如,编写此代码时,编译器实际上会创建一个新字符串对象来保存新的字符序列,且新对象将赋给 b. 然后字符串“h”将适宜于垃圾回收. 2.Ios平台使用PVRTC压缩纹理.Adroid平台使用ETC1格式压缩.均可以减至1/4的内存大小.优化…
  转载请标明出处http://www.cnblogs.com/zblade/ 最近有点繁忙,白天干活晚上抽空写点翻译,还要运动,所以翻译工作进行的有点缓慢 =.= PS: 最近重新回来更新了一遍,文章还是需要反复修改才能写的顺畅,多谢各位的支持 :D 本文续接前面的unity的渲染优化,进一步翻译Unity中的GC优化,英文链接在下:英文地址 介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用.内存垃圾是指当前废弃数据所占用的内…
本文为博主原创文章,欢迎转载.请保留博主链接http://blog.csdn.net/andrewfan Unity编程标准导引-3.4 Unity中的对象池 本节通过一个简单的射击子弹的示例来介绍Transform的用法.子弹射击本身很容易制作,只要制作一个子弹Prefab,再做一个发生器,使用发生器按频率产生子弹,即克隆子弹Prefab,然后为每个子弹写上运动逻辑就可以了.这本该是很简单的事情.不过问题来了,发射出去后的子弹如何处理?直接Destroy吗?这太浪费了,要知道Unity的Mon…
这里素材全是网上找的. 教程看这里: [Unity官方实例教程 秘密行动] Unity官方教程<秘密行动>(九) 角色初始设定 一.模型设置: 1.首先设置模型的动作无限循环. 不设置的话就会出现类似跑步只跑了第一步有动作后面无动作直接滑过去的样子. 1.1.点选模型的动作文件. 1.2.在“Inspector”面板点击“Animations”. 1.3.勾上“Loop Time”. 2.设置模型的比例. 可以把模型调整到合适的大小. 1.1.点选模型的动作文件. 1.2.在“Inspecto…
本文关注以下方面(环境为VS2012..Net Framework 4.5以及Unity 3): AOP简介: Interception using Unity示例 配置文件示例 一.AOP简介 AOP为Aspect-Oriented Programming的缩写,意为"面向切面(方面)编程",按维基百科的解释是"AOP is a programming paradigm that aims to increase modularity by allowing the sep…
在前面几篇有关Unity学习的文章中,我对Unity的一些常用功能进行介绍,包括:Unity的基本知识.管理对象之间的关系.生命周期.依赖注入等,今天则是要介绍Unity的另外一个重要功能——拦截(Interception). 以下是本文所要介绍的内容: 1.Unity与PIAB的关系. 2.使用Unity来接管PIAB的功能实现. 一.Unity与PIAB的关系 Unity中的Interception可以通过Unity的Container或独立的API(Intercept)来实现,这些具体的实…
原地址:http://digitalerr0r.wordpress.com/2013/08/27/unity-for-windows-iiipublishing-to-windows-phone-store/ In Part II we covered how you can publish your game to Windows Store, so it runs on Windows 8 driven devices. Today we are going to export our ga…
聊聊近况: 距离上一篇文章已经过了好久,主要原因是我懒了.公司项目也到了开始优化的阶段,上网找的资料,看过了就忘.还是想把它整理一下,写出来.其实我说的东西,网上都有,我只是搬运工而已. 贴图压缩: Android平台使用ETC1格式压缩. 目前主流的Android机型基本都支持ETC1格式压缩.但ETC1只能支持非Alpha通道的图片压缩. 所以一般把RGB和ALPHA分离出来,r值,g值,b值从RGB图获取,a值从Alpha图里获取. 随着OPENGL ES 3.0的发布,etc2也出了,支…
一般的说我们切割图片是将一张图片资源切割成更小的图片资源,也就是说在资源上就进行了切割,比如ugui上的切割方法. 如果我们有一些情况比如做拼图,可能让玩家自己选择自己的生活照作为拼图的原图. 那么我们需要进行在内存中进行切割 Texture2D ScaleTextureCutOut(Texture2D originalTexture, float startX,float startY, float originalWidth, float originalHeight) { original…
转自:http://www.jianshu.com/p/b37ee8cea04c 1.资源类型 GameObject, Transform, Mesh, Texture, Material, Shader, Script和各种其他Assets. 2.资源创建方式 静态引用,在脚本中加一个public GameObject变量,在Inspector面板中拖一个prefab到该变量上,然后在需要引用的地方Instantiate: Resource.Load,资源需要放在Assets/Resource…
概述 这是最近做项目时发现的一个内存管理机制上的一个缺陷,但是我并不知道这究竟是不是一个bug,因为他可以造成内存泄漏,但是却能避开野指针. 详细 代码下载:http://www.demodashi.com/demo/11529.html 一.准备工作 解压memerytest.zip压缩包,用Unity 5.3.3f1 (64-bit)及以上版本打开项目,打开Main场景,就可以测试了. 二.程序实现 第一步,我先创建一个类TestObj,类TestObj在生成时会申请一大块内存创建一个纹理,…
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 Unity引擎优化技术,无非涉及到三点:CPU优化,GPU优化,内存优化. 先谈谈内存优化:大概可以分成三大部分: 1. Unity3D内部的内存 2. Mono的托管内存 3. 引入的DLL或者第…
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 内存优化是一个老生常谈问题了,本篇博客把一些关于内存的知识点做了一个总结,给读者介绍一下,我们查看游戏运行内存问题,通常的做的法是借助一些Unity的第三方工具,但是作为程序来说还是先要明白其导致内…
最近一直在研究unity的内存加载,因为它是游戏运行的重中之重,如果不深入理解和合理运用,很可能导致项目因内存太大而崩溃. 详细说一下细节概念:AssetBundle运行时加载:来自文件就用CreateFromFile(注意这种方法只能用于standalone程序)这是最快的加载方法也可以来自Memory,用CreateFromMemory(byte[]),这个byte[]可以来自文件读取的缓冲,www的下载或者其他可能的方式.其实WWW的assetBundle就是内部数据读取完后自动创建了一个…
1,https://blog.csdn.net/wetest_tencent/article/details/52130703 2,http://blog.51cto.com/13638120/2084848 3,http://www.360doc.com/content/15/1015/16/9400799_505845687.shtml…
视频为中文讲解,mp4格式,大小3.05GB 目录   扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主…
[本段摘录自:IOC容器Unity 使用http://blog.csdn.net/gdjlc/article/details/8695266] 面向接口实现有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等,但是接口一定是需要实现的,如果一个子类实现换成另一个子类实现,就需要在代码中改动,或者建立一个工厂来根据条件生成,还是存着着一定的耦合关系. 依赖注入(Dependency Injection,DI),也叫控制反转(Inversion of Control,IoC)是一个重要的面…
一.单元测试的定义与作用 单元测试定义:单元测试在传统软件开发中是非常重要的工具,它是指对软件中的最小可测试单元进行检查和验证,一般情况下就是对代码中的一个函数去进行验证,检查它的正确性.一个单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验.单元测试使用单元测试框架编写,并要求单元测试可靠.可读并且可维护.只要产品代码不发生变化,单元测试的结果是稳定的.(百度的) 单元测试可以让你在软件开发的早期阶段发现 Bug,而不必到集成测试的时候才发…
前言 光学中,我们是用辐射度来量化光. 光照按照不同的散射方向分为:漫反射(diffuse)和高光反射(specular).高光反射描述物体是如何反射光线的,漫反射则表示有多少光线会被折射.吸收和散射出表面.根据入射光线的数量和方向,我们可以计算出射光线的数量和方向,通常使用出射度描述它.辐射度和出射度之间是线性关系的,它们之间的比值就是材质的漫反射和高光反射属性. BRDF模型 早期的游戏引擎一般只有一个光照模型,BRDF模型,即标准光照模型(Bidirectional Reflectance…
技术选型 Unity引擎内置了多人联机的解决方案,涵盖了从最底层的网络数据传输,到不同玩家之间的消息发送,再到游戏大厅这样的高级功能.考虑到Unity官方提供的云服务(Internet Services)在国内的延迟较高,而且需要付费,我们决定采用Steam与Unity相结合的方式.底层用Steam发送网络数据包,中间由Unity负责把各个包整合成游戏逻辑所需要的格式,高层的大厅也使用Steam提供的服务. 说到这里要赞美一下Unity Networking的模块设计,它把具体的网络数据传输细节…
本文转载自:http://blog.csdn.net/neil3d/article/details/38437237 Unity提供了自己的XXXServer,不过大家评论好像不是很好用,主要是不支持branch等我们做项目的重要特性:他还推荐Perforce这样高大上的版本管理系统,不过都很贵.所以我还是打算使用比较习惯的SVN来管理. 需要版本管理的目录 新建一个Unity Project之后,发现产生了很多目录和文件,其中只有两个是需要版本管理的:Assets.ProjectSetting…
我们在开发过程中发现,要调整Unity UI元素的大小,RectTransform提供了sizeDelta属性可以用来动态修改RectTransform的大小,但同时我们也google到另外一个修改RectTransform大小的方法,方法如下: public static void SetRectTransformSize(RectTransform trans, Vector2 newSize) { Vector2 oldSize = trans.rect.size; Vector2 del…
http://blog.csdn.net/gz_huangzl/article/details/52486509 前言 在我们开发游戏的过程中,经常会碰到脚本引用丢失的情况,但是怎么把它们修复到我们的理想情况呢?先在这打个预防针,不是所有情况下的脚本引用丢失都能修复,但绝大多数情况下都是可行的,只要你知道原来脚本的GUID和FILEID(不知道也可以在prefab中找到),最重要的是你要有(必须有)用来做修复的脚本GUID和FILEID,要不然就没办法修复 了. 我举个极端情况,假如Prefab…
在进行编辑器扩展时,创建组件的方法一般都会提供GUIStyle参数,可以让我们自定义样式.修改背景图,字体大小,颜色等等. 比如,创建Button组件的方法:public static bool Button(string text, GUIStyle style, params GUILayoutOption[] options); 创建时可以传递一个GUIStyle参数来自定义样式. 在GUI.skin.customStyles数组中,unity定义了很多自带的样式.有的需求可以直接在这些样…
为什么要监控? 监控及时获得应用的运行状态信息,在问题出现时及时发现. 监控什么? CPU.内存.磁盘I/O.应用程序(MongoDB).进程监控(ps -aux).错误日志监控 1.4.1 MongoDB集群监控方式 db.serverStatus() 查看实例运行状态(内存使用.锁.用户连接等信息) 通过比对前后快照进行性能分析 "connections" # 当前连接到本机处于活动状态的连接数 "activeClients" # 连接到当前实例处于活动状态的客…
包含光照,可处理多个光源,有光照衰减和阴影的shader,代码如下: 转载请注明出处:http://www.cnblogs.com/jietian331/p/7199311.html Shader "Custom/Bumped Specular" { Properties { _MainTex("Main Texture", 2D) = "white" {} _NormalMap("Normal Map", 2D) = &qu…
刨根问底U3D---从Profile中窥探Unity的内存管理 这篇文章包含哪些内容 这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别, 并且给出了最好控制内存的方法(我想你已经知道了...Prefab ) ,以及原因. 提前需要阅读的文章 在阅读本文之前或之后我建议阅读一下以下几篇文章 雨松的 Unity3D研究院之Assetbundle的实战 http://www.xuanyusong.com/archives/2405/ Un…