- 博客(54)
- 资源 (5)
- 收藏
- 关注
原创 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 339
原创 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 1715 1
原创 C#代码调用Cmd执行命令行
public void BuildProject() { string cmdExe = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\amd64\\MSBuild.exe"; string cmdStr = "D:\\Test...
2019-12-12 10:17:18 600
原创 利用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 589
翻译 优化Unity UI的指南——填充率,画布和输入(三)
修复填充率问题可以采取两种措施来减轻GPU片段管道的压力:降低片段着色器的复杂性。有关详细信息,请参阅“UI着色器和低规格设备”部分。减少必须采样的像素数。由于UI着色器通常是标准化的,因此最常见的问题是过度使用填充率。这通常是由于大量重叠的UI元素和/或多个UI元素占据了屏幕的重要部分。这两个问题都可能导致极高的透支度。为了减轻充填率的过度利用和过度绘制,考虑以下可能的补救措施:...
2019-03-18 15:46:03 807
翻译 优化Unity UI的指南——UI的基础知识(一)
理解组成Unity UI系统的不同部分是很重要的。有几个基本类和组件一起组成系统。本章首先定义了本系列文章中使用的一些术语,然后讨论了Unity UI的几个关键系统的底层行为。术语Canvas是一个原生代码Unity组件,Unity的渲染系统使用它来提供分层的几何体,这些几何体将被绘制到游戏世界空间中,或者游戏世界空间的顶部。画布负责将其组成的几何体组合成批次,生成适当的渲染命令并将这些命令...
2019-03-12 19:17:12 622
翻译 优化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 217
翻译 Native Memory
在优化应用程序时,Native Memory是一个关键部分,因为大多数引擎代码位于常驻内存中。 当你在原生插件中集成代码时,你可以直接控制它,但是从 Unity 内部系统中控制和优化Native Memory消耗并不总是可能的。 内部系统使用不同的缓冲区和资源,它可能并不总是明显地影响内存消耗。 下面的部分详细介绍了 Unity 内部系统,并解释了您在Native Profiler中经常看到的内存...
2019-02-22 18:59:54 1412
翻译 Unity 托管内存(Managed Memory)
理解托管堆对 Unity 中的内存管理至关重要。 有关分析托管内存和如何优化内存的更多信息,请参阅了解 Unity 中的理解优化部分。一、Assets资产在运行时引起本机内存和托管内存隐含。 在用户终止应用程序之前,Unity 运行时不会将托管内 存返回到操作系统进行重用。 如果托管堆变得过于支离破碎并耗尽可用内存,则它会增大。 由于这种不可预测的行为,知道资产如何占用托管内存是非常重要的:...
2019-02-21 19:57:20 2014
翻译 优化内存指南
在 Unity 中进行适当的内存管理具有挑战性。 您需要考虑自动内存管理的细微差别,理解本机内存和托管内存之间的区别,以及内存在不同平台上的行为。 本指南的目标是为您提供必要的知识,以便在任何公开可用的平台上分析和优化内存消耗。 本指南涵盖以下领域:Managed Memory–Assets–IL2CPP & MonoNative Memory–Native Buffer–As...
2019-02-21 19:06:16 141
原创 常用命令行(做个记录)
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 249
原创 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 3944
原创 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 426
原创 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 1048
原创 Unity3D配置文件的相关操作
Unity3D工程中使用配置文件一般使用Txt、Xml、Json、Db(数据库),四种格式文件对比: Txt: 需要自己设定格式、封装读取的方式;一般只读,不做修改(操作麻烦) Xml:标签语言,有自己的格式,系统提供读取和修改等相关API,操作方便。小游戏可用来存档 Json:采用键值对的方式进行存储,适合任意平台,一般客户端与服务端通讯采用该数据格式,同等数据信息要比Xml文件小,还可以只
2016-09-03 12:00:39 4879
原创 夜间模式实现方式
1.修改theme:public class BaseActivity extends AppCompatActivity { private boolean isNightMode; private NightModeReceiver mNightModeReceiver; @Override protected void onCreate(Bundle savedIn
2016-08-28 19:02:03 1453
原创 设计模式——中介者(Unity3d中的应用)
在Unity3D中的感知系统使用的便是一个中介者模式,感知包括视觉感应器、听觉感应器、视觉触发器、听觉触发器等,感应器触发器之间的交互交由中介者来完成,最大程度上实现感应器、触发器直接的解耦。
2016-08-27 23:09:24 1065
原创 设计模式——状态机(AI)(Unity3D中的应用)
在Unity3D中对状态模式的应用当属于有限状态机的使用,利用状态机管理游戏物体的状态的管理,实现一个AI系统。
2016-08-27 22:53:21 3195
原创 Android性能优化——数据库SQLite
数据库操作: 1.使用事务进行批量数据操作: 数据库操作的本质是对磁盘文件的操作,频繁操作文件是一个耗时操作,影响数据库的存取速度。使用事务会降低数据库文件的开关频率,从而节约操作时间:普通方式:public void insertMemberListNormal(List<MemberModel> memberModelList){ int size = memberModel
2016-08-27 13:47:34 561
原创 Android性能优化——Layout的优化
Android开发一般使用xml文件进行布局,在Activity的onCreate方法中调用setContentView(layoutId),实现页面的绘制,如果Layout文件布置不合理就会可能造成加载缓慢和过度绘制。 加载缓慢是因为布局嵌套太多,层级太深,导致xml文件解析速度过慢。如果容器选用不当,会导致多次计算子控件的位置而耗费时间。那如何解决以上问题呢? 1、Android为我们提供了
2016-08-27 13:45:58 615
原创 Android性能优化——数据结构的优化
Android性能优化包含很多方面,今天我们来看看对于数据结构如何做优化。 1.集合的遍历操作:private void for1(ArrayList<Model> list){ long start = System.currentTimeMillis(); int len = list.size(); for(int i= 0;i < len;i
2016-08-27 13:45:09 633
原创 Serializable与Parcelable区别
Serializable是Java中序列化的接口,主要用于ObjectInputStream和ObjectOutputStream进行对象读写。关于Serializable的相关注意点大概如下:序列化ID,静态变量序列化,序列化存储规则,单例模式序列化等 ①序列化ID:调整类结构后,其serialVersionUID若未修改,反序列化过程中不会报异常,但获取某个属性值时可能会null;seriaV
2016-08-27 13:42:50 564
原创 ViewPager取消缓存策略
APP开中经常用到ViewPager+Fragment+FragmentPagerAdapter这样的组合,但ViewPager自带缓存策略,所以每次ViewPager都会预加载下一页的内容,这样就导致滑动ViewPager进行切换时,都是加载的不是当前选项页的数据,而是下一个页面数据。那有没有办法干掉ViewPager的预加载功能,方法当然是有,但必须要将v4包下ViewPager的相关代进行修改
2016-08-27 13:41:44 1898
原创 ViewPager 3D翻转
利用PageTransformer实现ViewPager3D翻转 mDensity = getResources().getDisplayMetrics().density; mViewPager.setOffscreenPageLimit(2);//缓存两页,此处必须设置 mViewPager.setPageTransformer(true,newFlipPagerTransformer())
2016-08-27 13:40:40 543
原创 ViewPager 指示器
项目需要一个ViewPager的指示器,发现Android联系人中有该控件,于是抽取出来分享给大家:ViewPagerTabs .java:public class ViewPagerTabs extends HorizontalScrollView implements ViewPager.OnPageChangeListener { ViewPager mPager; privat
2016-08-27 13:39:55 618
原创 Volley上传文件
Volley上传文件:public class UploadFileRequest extends Request<JSONObject> { public static final String TAG = UploadFileRequest.class.getSimpleName(); private static final String CHARSET = "utf-8"; //
2016-08-27 13:38:42 470
原创 Volley上传图片
Volley以流的形式上传图片,参考了某大神代码public class PostUploadRequest extends Request {public static final String TAG = PostUploadRequest.class.getSimpleName();private static final String CHARSET = "utf-8"; //设置编码St
2016-08-27 13:37:44 480
原创 RecyclerView 添加头部和尾部,并实现Item的点击事件
RecyclerView是Android中新加入的控件,用来替换ListView和GridView,但在使用时也存在一些不如意的地方,没有Item的点击事件,不能添加头部和尾部,本文就此来实现这些功能: 1.我们先看看ListView是如何添加头部和尾部的,public void addHeaderView(View v, Object data, boolean isSelectable) {
2016-08-27 13:36:26 682
原创 Android仿淘宝购物车
最近项目需要实现类似淘宝购物车的功能,仿了一个,直接上代码:public class MainActivity extends Activity implements OnCartListener, View.OnClickListener { private static final boolean DEBUG = true; private static final String
2016-08-27 13:35:11 1612
原创 Toolbar自定义布局
Toolbar如何使用想必大家清楚地很,实际开发中标题栏的样式各色各样,因此其基本样式便不能满足我们的需求,这就需要我们自定义布局。打开ToolBar源码我们发现它继承ViewGroup,这就表示我们可以把它当做一个存放控件的容器。 <android.support.v7.widget.Toolbar android:layout_width="match_parent"
2016-08-27 13:31:57 587
原创 SQLite操作——Android
SQLite是一个功能全面的轻量关系型数据库,支持SQL语法,Android系统中SQLiteDatabase类封装了操作数据库的API。在Android中使用SQLite的步骤: 1.创建数据库只需要继承SQLiteOpenHelper类,实现构造器,onCreate(),onUpgrad(); ①构造器中需要四个参数(Context 、数据库的Name、游标工厂(可为null)、数据库
2016-08-27 13:29:52 535
原创 Unity3D性能优化 (五)——UI
一、DrawCall优化 ①UI层级 三张图对比发现场景中UI的数目一样,布局有变化,导致了其DrawCall数目不一样。当出现重叠时,会影响空间拓扑关系,从而影响了Unity对DrawCall的优化。 所以UI布局时,同一深度的UI(Item)不要出现重叠。 在实际应用中如背包系统,上面两张图由于第一张的Image偏大,导致DrawCall的增加②精灵打包 通过设置Packi
2016-08-27 12:13:21 8167 2
原创 Unity3D性能优化(四)——图片资源
1.支持的图片格式 jpg : 有损压缩 文件小 不支持透明 png: 无损压缩 文件小 支持透明 tag:无所压缩 文件大 支持透明 dds : 无损压缩 文件最小 支持透明 不支持iOS2.导入Unity的图片为什么有些会变大? 图
2016-08-27 12:00:52 4590
原创 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 2608
原创 Unity3D如何实现跨平台
1.使用Mono,将编译代码实现跨平台运行。 2.使用PhysX(NVIDIA),实现物理系统(Physics Powered)跨平台 3.使用OpenGL、DX图形学接口,实现渲染的跨平台
2016-08-25 23:36:44 1034
原创 Unity3D性能优化(三)——DrawCall
1.什么是DrawCall? CPU调用一次图形学接口(OpenGL、DX)称为一个DrawCall。 2.图像在计算机显示的过程? CPU——->图形学接口———>GPU 3.为什么降低DrawCall可以提升性能? 性能提升表现在流畅度上,要保证流畅度,就需要达到一定的FPS(帧率),即一秒钟需要播放一定量的画面,当每帧DrawCall较高时,就表示CPU调用图形学的接口次数高,花费的
2016-08-25 23:29:45 1618
原创 Unity3D性能优化(二)
一、GPU: (瓶颈) 受供给比率或内存带宽的限制–》降低显示分辨率 (非瓶颈)处理顶点过多,顶点的个数由GPU以及顶点着色器的复杂成都决定 手机:主要图形不超过10万个 电脑: 1000万①优化模型几何体 a.切勿使用过多的三角形 b.尽量降低UV贴图接缝和硬边缘数目(顶点增加一倍) ②光照性能—使用光照贴图“烘焙”一次静态
2016-08-25 23:13:30 611
原创 HTTP
HTTP是一种无状态的协议,一次请求、响应周期完成后,TCP连接就断了。 因此HTTP协议(旧版)无法保持用户与服务器端的会话,为了能使无状态的HTTP协议支持会话状态, Server端给访问用户发放临时号码牌(Session ID),并相应存储会话状态(Session)。1.Session ID如何分配和使用? 客户端获取HTTP Response时,服务器分配一个Session ID放入R
2016-08-24 22:52:27 488
原创 TCP、UDP、HTTP、Socket的区别
关于网络通信我们不得不提一下OSI模型,它有7层结构,从上往下依次为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。 TCP/IP协议是因特网整个TCP/IP协议族,简化了OSI模型,分成了四层:应用层、传输层、网络层、网络接口层。我们平时提到的IP属于网路层的协议,TCP、UDP属于传输层的协议,Http、Https属于应用层的协议。 TCP: 是一种面向连接的、
2016-08-21 22:07:19 397
原创 设计模式——适配器(Unity3D中的应用)
Adapter(适配器):转接1.从复用出发,是使用继承还是组合,关心类与类之间的关系 2.复用已有的功能,但已有的功能接口不是客户端想要的。
2016-08-15 23:50:32 455
GPUInstance.zip
2019-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人