Unity3D
PirateCode
这个作者很懒,什么都没留下…
展开
-
常用命令行(做个记录)
1.Unity转平台 /Applications/Unity/Unity.app/Contents/MacOS/Unity "D:\Tools\Unity\Editor\Unity.exe" -buildTarget Android -projectPath C:\Project\trunk\mobile_project2.获取Android apk签名 keytool...原创 2019-02-01 18:00:12 · 267 阅读 · 0 评论 -
Unity DrawCall合批
1.修改Mesh UV九张小图合并到一张大图上,然后修改Quad的UV分别取出九张小图。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Networking;public class MeshTest : MonoBehaviour{ // Start is called before the first frame update原创 2020-09-21 13:37:07 · 387 阅读 · 0 评论 -
Unity ECS GameObject转化为Entity(一)
一、实现IConvertGameObjectToEntity接口IConvertGameObjectToEntityusing UnityEngine;using Unity.Entities;using Unity.Transforms;[System.Serializable][RequireComponent(typeof(ConvertToEntity))][RequiresEntityConversion]public class CubeDataSource : MonoBe原创 2020-06-21 19:51:41 · 1833 阅读 · 1 评论 -
利用GPU Instance 配合PropertyBlock优化DrawCall
GPU Instance1.未开启GPU Instance:2.开启GPU Instance:Shader "Shader_InstanceTest"{ Properties{ _Diffuse("Diffuse", Color) = (1,1,1,1) } SubShader{ Pass{ Tags {"LightMode" = "ForwardBase"} ...原创 2019-10-23 11:14:05 · 621 阅读 · 0 评论 -
Unity3D性能优化 (五)——UI
一、DrawCall优化 ①UI层级 三张图对比发现场景中UI的数目一样,布局有变化,导致了其DrawCall数目不一样。当出现重叠时,会影响空间拓扑关系,从而影响了Unity对DrawCall的优化。 所以UI布局时,同一深度的UI(Item)不要出现重叠。 在实际应用中如背包系统,上面两张图由于第一张的Image偏大,导致DrawCall的增加②精灵打包 通过设置Packi原创 2016-08-27 12:13:21 · 8248 阅读 · 2 评论 -
设计模式——状态机(AI)(Unity3D中的应用)
在Unity3D中对状态模式的应用当属于有限状态机的使用,利用状态机管理游戏物体的状态的管理,实现一个AI系统。原创 2016-08-27 22:53:21 · 3240 阅读 · 0 评论 -
设计模式——中介者(Unity3d中的应用)
在Unity3D中的感知系统使用的便是一个中介者模式,感知包括视觉感应器、听觉感应器、视觉触发器、听觉触发器等,感应器触发器之间的交互交由中介者来完成,最大程度上实现感应器、触发器直接的解耦。原创 2016-08-27 23:09:24 · 1099 阅读 · 0 评论 -
Unity3D开发小技巧
1.父物体居中于多个子物体中心位置 选中父物体->点击GameObject选项->点击Center On Children2.打破当前寻路 NavMeshAgent.enable = false; NavMeshAgemt.anable = true;3.WWW访问StreamingAssets文件(Android平台)4.Stopwatch查看代码的执行时间 Stopwa原创 2016-09-05 22:11:30 · 453 阅读 · 0 评论 -
Unity3D如何实现跨平台
1.使用Mono,将编译代码实现跨平台运行。 2.使用PhysX(NVIDIA),实现物理系统(Physics Powered)跨平台 3.使用OpenGL、DX图形学接口,实现渲染的跨平台原创 2016-08-25 23:36:44 · 1065 阅读 · 0 评论 -
Unity3D性能优化(二)
一、GPU: (瓶颈) 受供给比率或内存带宽的限制–》降低显示分辨率 (非瓶颈)处理顶点过多,顶点的个数由GPU以及顶点着色器的复杂成都决定 手机:主要图形不超过10万个 电脑: 1000万①优化模型几何体 a.切勿使用过多的三角形 b.尽量降低UV贴图接缝和硬边缘数目(顶点增加一倍) ②光照性能—使用光照贴图“烘焙”一次静态原创 2016-08-25 23:13:30 · 625 阅读 · 0 评论 -
Unity3D调用Android SDK
1.Android开发工具和Unity开发工具要使用一致的SDK. ①Eclipse配置AndroidSDK路径2.Android工程创建 ①.创建Android 项目:Package Name 要与 Unity中的Android 平台打包时的Bundle Identifier一致3.Android工程配置 ①导入开发包classes.jar, —->Build Path原创 2016-09-03 12:53:07 · 1078 阅读 · 0 评论 -
Unity3D调用Android系统相册
Android代码:public class MainActivity extends UnityPlayerActivity { private static final String TAG = MainActivity.class.getSimpleName(); private static final int PHOTO_REQUEST_CODE = 1; priva原创 2016-10-23 16:22:00 · 3988 阅读 · 0 评论 -
优化内存指南
在 Unity 中进行适当的内存管理具有挑战性。 您需要考虑自动内存管理的细微差别,理解本机内存和托管内存之间的区别,以及内存在不同平台上的行为。 本指南的目标是为您提供必要的知识,以便在任何公开可用的平台上分析和优化内存消耗。 本指南涵盖以下领域:Managed Memory–Assets–IL2CPP & MonoNative Memory–Native Buffer–As...翻译 2019-02-21 19:06:16 · 159 阅读 · 0 评论 -
Unity 托管内存(Managed Memory)
理解托管堆对 Unity 中的内存管理至关重要。 有关分析托管内存和如何优化内存的更多信息,请参阅了解 Unity 中的理解优化部分。一、Assets资产在运行时引起本机内存和托管内存隐含。 在用户终止应用程序之前,Unity 运行时不会将托管内 存返回到操作系统进行重用。 如果托管堆变得过于支离破碎并耗尽可用内存,则它会增大。 由于这种不可预测的行为,知道资产如何占用托管内存是非常重要的:...翻译 2019-02-21 19:57:20 · 2108 阅读 · 0 评论 -
Native Memory
在优化应用程序时,Native Memory是一个关键部分,因为大多数引擎代码位于常驻内存中。 当你在原生插件中集成代码时,你可以直接控制它,但是从 Unity 内部系统中控制和优化Native Memory消耗并不总是可能的。 内部系统使用不同的缓冲区和资源,它可能并不总是明显地影响内存消耗。 下面的部分详细介绍了 Unity 内部系统,并解释了您在Native Profiler中经常看到的内存...翻译 2019-02-22 18:59:54 · 1472 阅读 · 0 评论 -
优化Unity UI的指南
翻译:https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-optimizing-unity-ui优化由Unity UI驱动的用户界面是一门艺术。硬性规则很少见; 相反,必须在考虑系统行为的情况下仔细评估每种情况。在优化任何Unity UI时,最核心的问题是平衡绘制调用和批处理成本。虽然可以使用一些常识性技术来减少其...翻译 2019-03-12 19:09:08 · 250 阅读 · 0 评论 -
优化Unity UI的指南——UI的基础知识(一)
理解组成Unity UI系统的不同部分是很重要的。有几个基本类和组件一起组成系统。本章首先定义了本系列文章中使用的一些术语,然后讨论了Unity UI的几个关键系统的底层行为。术语Canvas是一个原生代码Unity组件,Unity的渲染系统使用它来提供分层的几何体,这些几何体将被绘制到游戏世界空间中,或者游戏世界空间的顶部。画布负责将其组成的几何体组合成批次,生成适当的渲染命令并将这些命令...翻译 2019-03-12 19:17:12 · 663 阅读 · 0 评论 -
优化Unity UI的指南——填充率,画布和输入(三)
修复填充率问题可以采取两种措施来减轻GPU片段管道的压力:降低片段着色器的复杂性。有关详细信息,请参阅“UI着色器和低规格设备”部分。减少必须采样的像素数。由于UI着色器通常是标准化的,因此最常见的问题是过度使用填充率。这通常是由于大量重叠的UI元素和/或多个UI元素占据了屏幕的重要部分。这两个问题都可能导致极高的透支度。为了减轻充填率的过度利用和过度绘制,考虑以下可能的补救措施:...翻译 2019-03-18 15:46:03 · 855 阅读 · 0 评论 -
U3D自定义摇杆
public class Joystick : MonoBehaviour,IDragHandler,IPointerDownHandler,IPointerUpHandler { [SerializeField] private RectTransform borderTF; [SerializeField] private RectTransform handleT原创 2016-06-26 23:59:20 · 491 阅读 · 0 评论 -
Unity3D配置文件的相关操作
Unity3D工程中使用配置文件一般使用Txt、Xml、Json、Db(数据库),四种格式文件对比: Txt: 需要自己设定格式、封装读取的方式;一般只读,不做修改(操作麻烦) Xml:标签语言,有自己的格式,系统提供读取和修改等相关API,操作方便。小游戏可用来存档 Json:采用键值对的方式进行存储,适合任意平台,一般客户端与服务端通讯采用该数据格式,同等数据信息要比Xml文件小,还可以只原创 2016-09-03 12:00:39 · 4934 阅读 · 0 评论 -
Unity3D使用3DMAX的美术资源时注意点
一、关于Transform默认数值 1.3DMax使用默认导出模型,直接导入到Unity中Transform—>Rotation为-90度? 3DMax中为Z轴向上,默认道导出时设置为Y轴朝上,模型的轴会绕X轴旋转90度,达到Y轴朝上的效果2.3DMax导出模型,导入到Unity中Transform—>Position不为0? 3Dmax建造模型时,没有将位置设置到世界坐标系原点。3.3D原创 2016-08-25 23:47:16 · 2646 阅读 · 0 评论 -
在U3D中查找物体和组件的方式
一、找物体: ①GameObject: a.Find(string name)通过物体的名字查找 b.FindWithTag(string tag);通过标签获取添加该标签的一个物体 c.FindObjectOfType();依据组件类型 d.FindGameObjectsWithTag(string tag)通过标签获取所有添加该标签的物体数组 ②Tra原创 2016-06-28 22:32:15 · 2071 阅读 · 0 评论 -
Unity3D中射线的相关使用
①利用射线和自动寻路实现在小地图中点击场景中物体实现目标移动 代码:public class MapCameraRayTest : MonoBehaviour{ [SerializeField] private Camera mapCamera; private RaycastHit hit; private NavMeshAgent agent; pri原创 2016-07-11 23:05:13 · 507 阅读 · 0 评论 -
设计模式——桥接(Unity3d中应用)
桥接: 连接两端的变化 1.主体自身有变化(会有派生) 主体关联部分的抽象 主体与部分是桥接 2.部分也有变化(会有派生) 3. 解决主体的派生类与部分的派生类的关系 主体与部分的抽象层建立桥接关系 4.解决排列组合 5.如果主体自身无派生,就变为策略模式游戏中中: 技能释放器 与 攻击选择器、对自身影响效果、对敌人影响效果原创 2016-08-15 23:47:33 · 642 阅读 · 0 评论 -
设计模式——外观(Unity3D中的使用)
外观:向导 1.系统与系统间的交互,系统的代表 2.解决层次的依赖关系例如: 技能系统,任务系统,各个系统提供一个向导对外访问,简化调用流程。原创 2016-08-15 23:49:06 · 365 阅读 · 0 评论 -
设计模式——适配器(Unity3D中的应用)
Adapter(适配器):转接1.从复用出发,是使用继承还是组合,关心类与类之间的关系 2.复用已有的功能,但已有的功能接口不是客户端想要的。原创 2016-08-15 23:50:32 · 478 阅读 · 0 评论 -
设计模式——工厂(Unity3D中的应用)
客户端简化对象的创建过程 创建与表示分离静态(简单)工厂(Switch...case变庞大) 改进:(通过反射解决Switch惊悚现身)工厂方法 (多选一)(工厂实现类增多,平行继承体系)(废弃) 抽象工厂(多选多 成系列创建)(平行继承体系) 改进:(简单工厂方式实现抽象抽象工场思维,利用反射) 配置注入 设置注入 构造注入原创 2016-08-14 09:32:07 · 2548 阅读 · 0 评论 -
设计模式——装饰者(Unity3D中的应用)
装饰者:包装 为某些对象动态附加功能 使用派生可以扩展一个类的行为,但是无法单独扩展某个或者某些对象的行为,在类的设计上采用装饰者模式可以实现对某个对象扩展功能。比如:在ARPG中,武器和装饰物就采用该模式扩展了武器的行为,比如剑上镶嵌一颗宝石使得宝剑在基础攻击功能上增加使敌人产生眩晕效果,你可能会想只要在剑的类中添加一个眩晕方法不就行了吗,但是这样做后,所有原创 2016-08-15 23:38:03 · 1637 阅读 · 0 评论 -
设计模式——单例(Unity3D中的应用)
问题:希望一个类型创建一个对象且全局共享(静态公开)(创建一次,多次使用) 控制类型创建对象的数量 解决方案:效果:{ 静态类和单例差别: 静态类: 1.常驻内存利用空间换时间,快(不需要频繁 开辟空间,装载数据),频繁使用 字段代表对象的状态,对象的不同是字段不同,而方法单独存放一份 2.生命周期由系统控制 3.约束类中成员都为静态原创 2016-08-14 09:26:29 · 776 阅读 · 0 评论 -
Unity3D性能优化(三)——DrawCall
1.什么是DrawCall? CPU调用一次图形学接口(OpenGL、DX)称为一个DrawCall。 2.图像在计算机显示的过程? CPU——->图形学接口———>GPU 3.为什么降低DrawCall可以提升性能? 性能提升表现在流畅度上,要保证流畅度,就需要达到一定的FPS(帧率),即一秒钟需要播放一定量的画面,当每帧DrawCall较高时,就表示CPU调用图形学的接口次数高,花费的原创 2016-08-25 23:29:45 · 1651 阅读 · 0 评论 -
Unity3D性能优化(一)
一、数学计算: 利用弧度判断范围: 向量点乘求夹角,求出弧度 float dot =Vector3.Dot(a.normalized, b.normalized); float angle = Mathf.Acos(dot) * Mathf.Rad2Deg二、降低DrawCalls:①Occlusion Culling(OC):a.定义:当物体被送进渲染流水原创 2016-06-28 22:17:14 · 836 阅读 · 0 评论 -
Unity3D性能优化(四)——图片资源
1.支持的图片格式 jpg : 有损压缩 文件小 不支持透明 png: 无损压缩 文件小 支持透明 tag:无所压缩 文件大 支持透明 dds : 无损压缩 文件最小 支持透明 不支持iOS2.导入Unity的图片为什么有些会变大? 图原创 2016-08-27 12:00:52 · 4666 阅读 · 0 评论 -
SQLite操作——Android
SQLite是一个功能全面的轻量关系型数据库,支持SQL语法,Android系统中SQLiteDatabase类封装了操作数据库的API。在Android中使用SQLite的步骤: 1.创建数据库只需要继承SQLiteOpenHelper类,实现构造器,onCreate(),onUpgrad(); ①构造器中需要四个参数(Context 、数据库的Name、游标工厂(可为null)、数据库原创 2016-08-27 13:29:52 · 553 阅读 · 0 评论 -
MonoBehaviour组件的生命周期
Editor: Reset;Initialization: Awake OnEnable StartPhysic: FixedUpdate OnTriggerXXX OnCollisionXXXInput events: OnMouseXXXGame logic: OnUpdate LateUpdateScene rendering: OnWillrenderObjec原创 2016-06-18 00:52:42 · 384 阅读 · 0 评论 -
HTTP
HTTP是一种无状态的协议,一次请求、响应周期完成后,TCP连接就断了。 因此HTTP协议(旧版)无法保持用户与服务器端的会话,为了能使无状态的HTTP协议支持会话状态, Server端给访问用户发放临时号码牌(Session ID),并相应存储会话状态(Session)。1.Session ID如何分配和使用? 客户端获取HTTP Response时,服务器分配一个Session ID放入R原创 2016-08-24 22:52:27 · 511 阅读 · 0 评论 -
设计模式——原型(Unity3D中应用)
原型 Prototype 对象间数据拷贝(深拷贝,浅拷贝)原创 2016-08-14 16:23:54 · 1088 阅读 · 0 评论 -
设计模式——建造者Build(Unity3D中应用)
Build(建造者模式) 构建与表示分离 与工厂模式不同的是:工厂注重在于创建,Builder注重在于构建(创建细节)原创 2016-08-14 16:26:23 · 670 阅读 · 0 评论 -
TCP、UDP、HTTP、Socket的区别
关于网络通信我们不得不提一下OSI模型,它有7层结构,从上往下依次为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。 TCP/IP协议是因特网整个TCP/IP协议族,简化了OSI模型,分成了四层:应用层、传输层、网络层、网络接口层。我们平时提到的IP属于网路层的协议,TCP、UDP属于传输层的协议,Http、Https属于应用层的协议。 TCP: 是一种面向连接的、原创 2016-08-21 22:07:19 · 419 阅读 · 0 评论 -
U3D自定义滑动面板ViewPager
public class ViewPager : MonoBehaviour ,IDragHandler,IEndDragHandler,IPointerDownHandler{ [SerializeField] private float dragSpeed = 10; [SerializeField] private float offetSpeed = 1;原创 2016-06-28 00:39:30 · 526 阅读 · 0 评论