自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

Unity DrawCall合并

1.修改Mesh UV 2.GPU Instancing qazxswedcvfrtgbtgbnhyujm,ki

2020-09-21

GPUInstance.zip

利用GPU Instance 配合PropertyBlock优化DrawCall,在共享一个材质的情况下,可以修改属性,达到每个游戏对象表现不同的效果

2019-10-23

Unity调用Android系统相册

Unity调用Android相册,获取到图片,在Unity中调用Android原生应用。

2016-10-23

Unity AI系统

Unity有限状态机

2016-08-28

Android夜间模式

Android实现夜间模式:1.修改theme 2.修改uimode

2016-08-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除