自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 浅谈unity优化

优化:根据观察,大量配置数据都是相同,所以可以把出现次数最多的值,抽离出来当做众数,来作为deafaultconfig. 即使不同的我们可以通过找规律比如和来作为标准再作为另一个deafaultconfig。为什么要优化Lua配置表:随着版本迭代,功能越来越多,配置也随着水涨船高,根据分析,一大半的Lua内存是配置表贡献的。配置表是常量,也无法被GC。同一个系统下会打包只同一个bundle,如果有其他系统预制体依赖,会照成bundle变大,内存增高。一:Lua配置表内存优化。四:shader内存优化。

2023-06-15 23:13:02 914

原创 shader 混合模式

产生的颜色被乘以SrcFactor. 已存在于屏幕的颜色乘以DstFactor,并且两者将被叠加在一起。BlendSrcFactor DstFactor, SrcFactorA DstFactorA:同上,但是使用不同的要素来混合alpha通道。在所有着色器执行完毕,所有纹理都被应用,所有像素准备被呈现到屏幕之后,使用Blend命令来操作这些像素进行混合。AlphaToMaskOn:里面新添加的,常用在开启多重渲染(MSAA)的地表植被的渲染。此阶段的值是乘以帧缓冲区源alpha的值。

2023-05-28 18:03:29 973

原创 c# Stream、FileStream、MemoryStream的区别

1.Stream:流,在msdn的定义:提供字节序列的一般性视图,Stream提供了读写流的方法是以字节的形式从流中读取内容。而我们经常会用到从字节流中读取文本或者写入文本,微软提供了StreamReader和StreamWriter类帮我们实现在流上读写字符串的功能。2.FileStream:文件流,继承Stream。一个FileStream类的实例实际上代表一个文件流,使用FileStream类可以对文件系统上的文件进行读取、写入、打开和关闭操作。public class FileStream

2020-08-07 17:24:13 2337

原创 Socket编程小知识

Socket.listenSocket socket;socket.Listen(n); //n代表同时连接时最大的等待数,超过的部分将返回连接失败。Semaphore semaphore;semaphore.Wait(); //将semaphore值--,当等于0时线程将挂起,待到semaphore值释放(大于0)时再执 //行...

2020-08-06 18:10:01 117

原创 unity 内存泄漏

内存泄漏,可以通俗解释为“借银行钱不还”(看来和霸气侧漏还不太一样嘛)。在计算机的二进制世界里,操作系统就是银行;每一笔贷款,都是一次内存的申请;而你,就是一个应用程序。即你向银行贷款=应用程序向操作系统申请内存。当然,在计算机世界中,我们需要感谢操作系统,因为他是一个不收利息的银行,你借了多少内存,你就只需要还回多少内存。那么我们可以总结一下,内存泄漏的简单定义,就是申请了内存,却没有在该释放的时候释放。如果你总是贷款而不还钱,那么银行里的钱就越来越少,最终导致其他人要借钱时,就无钱可借了。现实生..

2020-07-24 10:24:20 427

转载 MMORPG开发入门

文章的中心是如何起步开发你自己的 大型多人在线角色扮演游戏( 原文:Massive Multiplayer Online Role Playing Games) (MMORPG)(译者注:俗称:网络游戏,网游)。 针对的读者是经验和资源有限的开发者。 读完文章之后,你应该懂得如何起步, 还有一些关于什么是应该做的和不应该做的忠告。第一步是评估你的能力和资源。你必须对自己诚实,因为做你力不从心的事情会浪费你的时间并让你心灰意冷。第一步:评估你的能力必须的技能:懂至少一种编程语言。 迄今为止, C++因为性

2020-06-05 18:14:40 832

转载 VSync Count 垂直同步

Unity3D中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间。一直不太明白是怎么回事,现在基本上明白了。我在这里解释一下原因,如有错误,欢迎指正。在Unity3D中当运行场景打开Profiler的时候,我们会看到VSync 这一项占了很大的比重。这个是什么呢,这个就是垂直同步,稍后再做解释。我们可以关闭VSync来提高帧速率,选择edit->project setti...

2020-05-07 17:18:14 216

原创 Unity处理MP3流播放

Unity处理MP3流播放PCMReaderCallback回调Unity音频数据是通过AudioClip去处理的,它提供了PCMReaderCallback回调,用于加载流音频数据。它的声明如下:public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, boo...

2020-01-09 17:55:38 3792 2

原创 Unity性能分析和内存分析工具

引言Unity是商业引擎,除了购买源代码,并不开源。所以在针对Unity应用进行优化的时候,需要借助官方的工具,分析游戏代码的性能消耗和内存开销。主要的工具是编辑器下的Profiler;针对内存分析,还有一个官方工具MemoryProfiler。本文主要针对这两个工具,做一下简单介绍加实际分析。编辑器ProfilerProfiler窗口在Windows/Profiler菜单下可以打开,...

2020-01-09 10:14:08 2760

原创 Unity 路点寻路,自带的导航网格寻路,A* Pathfinding project 区别

引言寻路系统是当今众多游戏中不可或缺的功能模块。比如格子游戏中的格子寻路,塔防怪物的行进路径,捕鱼游戏中的鱼群路径,RPG游戏中的怪物AI等,不同的需求对应的寻路策略的选择也不尽相同。正文在Unity3D中我们一般常用的寻路策略有: 1.路点寻路(WayPoint)路点寻路是最简单,易理解,易操作的(如下图):需要预先设置好路径点坐标集合。然后对象按照规定的坐标集...

2019-08-16 13:57:04 4297

原创 UGUI自定义GridView(流式布局)

引言Unity中对子物体的排序我们一般是使用GridLayoutGroup这个组件,但是这个组件会强行将子物体的width和height设置为相同的,但是如果遇到子物体的宽高不同的需求时,这个GridLayoutGroup将不再适用。此时需要我们自定义的编写一套排序子物体的算法(分为子View宽度一致,高度不一致或者高度一致,宽度不一致两种情况)。温馨提示本文排序子物体采用了设置本地坐...

2019-06-17 15:31:00 871

原创 UGUI 滚动列表循环使用

引言Unity中对于如排行榜,关卡列表等需要动态生成的列表一般是采用有多少就实例化多少的做法,这样一般情况下是没问题,但如果需要显示很多如上百上千个的话继续采用这种做法会造成内存的浪费,卡顿等。所以此时需要我们编写一套可以随Scroll Rect的滚动来动态调整位置并赋值的算法来满足我们的需求。正文分析本文暂时只讨论每个克隆体的width和height一致的情况。思路分为以下三步。...

2019-06-10 18:09:10 595

原创 Unity UI网格自定义应用

Unity UI网格自定义应用引言Unity UI是Unity官方支持的UI框架,在设计上有一定的灵活性和扩展性。UGUI除了RectTransform, Canvas,CanvasRender稍微底层的组件,主要组件如Image,Text等都是开源的。UGUI基础结构UGUI里面所有可以绘制与响应事件的图形组件都继承于Graphic。由于基础组件都支持遮罩层,实际上Image,T...

2019-03-12 10:31:02 1649

原创 Unity3D-限制物体的旋转角度(3D和UI均可)

 using System.Collections;using System.Collections.Generic;using UnityEngine;public class TTT : MonoBehaviour{    public float turnSpeed=5;    // Use this for initialization    void Start()...

2019-01-15 18:29:24 2154

转载 Unity中Texture和Texture2D格式互相转换

在网络小游戏中有时候会有这样的需求的就是Texture和Texture2D类型的转换,例如:本地选择头像更换,背包图片的更新等.当然这方法只适用于小量级的小需求,大的需求会使用专门的处理类完成处理. 小游戏一般会使用更省性能的RawImage,不管怎么的使用场景,今天只分享技术.其中的就是图片的动态转换了( 编辑器模式下 )/// <summary>/// Texture...

2019-01-07 20:14:15 6686

原创 DoTween常用API(干货版)

今天简单的说一下DoTween的用法,之前习惯了用NGUI,关于UI的简单动画,我们都是可以用NGUI自带的Tween来处理,新版的Unity出来之后,大家都习惯使用内嵌的UGUI来处理UI。那么对于UI的动画制作,就有了很多的选择,可以通过脚本直接编写动画,也可以使用Animator卡动画,当然还有很多的工具供我们选择,主要有Itween,LeanTween,DoTween(HotTween)等...

2019-01-02 12:05:10 2183

原创 svn报错:“Previous operation has not finished; run 'cleanup' if it was interrupted“

一,下载sqlite3.zip,解压后放到.svn目录下每个人的不一样,比如我的F:\SVN\.svn二,Win+R打开控制台,输入cmd,然后将sqlite3拖到控制台后输入wc.db三,执行delete from work_queue; 命令。成功(另附sqlite3下载链接)链接:https://pan.baidu.com/s/1fxYVP5rtJQfPxzoocZN...

2018-12-14 15:00:09 110

原创 UnityEditor基础入门

UnityEditor基础分享1. [MenuItem("Tools/Simulator")] 增加工具栏的菜单选项,点击可调用一个静态方法,最简单,最常见2. Assets处理对资源的预处理以及批量处理,结合[MenuItem("Assets/XXX")]和Selection.GetFiltered(typeof(Object), SelectionMode.DeepAsse...

2018-11-27 14:27:24 321

原创 Unity压包技术简介(优化)

1.查看包体是由什么构成的模拟打包APK一次,Unity会输出打包日志,点击Console右上角,选择"Open Editor Log" Unloading 1780 unused Assets to reduce memory usage. Loaded Objects now: 3254. Total: 10.497625 ms (FindLiveObjects: 0...

2018-11-15 17:49:26 1666

转载 Untiy 导入C# DLL动态链接库

Untiy 导入C# DLL插件。1. 创建类库文件,注意选择.NET最好不要大于3.5版本,因为Unity使用的mono版本为2.0,支持最多到.NET 3.5版本。2. 如下图,创建一个MyRandomClass,包含一个公有方法GetRandom(),获取C#自带随机数获取函数。3.编译生成.dll文件,地址看输出信息。4.生成两个文件。5.将其中.dll...

2018-09-29 18:41:55 232

原创 Unity之深入分析对象池

引言何为对象池:对于游戏中经常使用而且需要及时销毁的对象,比如子弹,特效,捕鱼游戏中的鱼,甚至音效,这些对象如果使用平常的instantiate方法,是在不停的申请内存,而这些对象基本有没有区别,这样无疑会消耗我们大量性能。所以对象池为此而生。对象池就是在我们不需要的时候隐藏起来而不是直接销毁.。对象池的大概结构:因为我们的对象池应该是可以存储大量不同种类的池子(object),所以用一个...

2018-09-11 22:11:45 236

原创 Unity编译器之快捷添加碰撞器,和移除碰撞器(运用递归)

在实际做项目中,有时候经常需要对地形的碰撞体进行编辑,比如很多不需要加碰撞体的对象却带着碰撞体,如果手动去移除,工作量又是很大(经常子物体又是套着子物体,十分复杂),有时候又需要添加碰撞体,本人就移除碰撞体这件事件花了很长时间,不胜其烦,网上的资料也不是太多,也不全。所以在这给大家贴出流程与代码。可以使开发更加方便。 新建一个名为Editor的文件夹,在这个文件夹下新建一个脚本Editor...

2018-09-10 16:53:39 2498

原创 Unity递归思想 阶乘 1 1 2 3 5 8 13 和递归寻找子物体

递归的核心思想就是自己调用自己,只要能说出来,就能用代码写出来 public int 阶乘(int index)    {              if (index == 1)        {            return 1;        }        return index * GeiNum(index - 1);    }public int ...

2018-09-05 15:47:59 532

原创 Unity 王者荣耀东皇太一一技能初步制作

问题描述:游戏刚开始,主角身边是没有球球的,当每点一下一技能,会自动创建一个球球围绕在主角身边并且与之前的球球等差的围绕在身边,最多三个球首先说明以下方法是本小菜用现有知识做出的解答,至于王者荣耀本身肯定不是这个做的。至于怎么做的,我也不知道我这次做的对球的数量也没有限制(仅仅点了一下)主要用到的函数:go.transform.RotateAround(transform.posi...

2018-09-04 17:40:26 594

原创 Unity对周围固定距离的怪物造成伤害并击飞的解释

问题:  手雷碰到地面对周围5米的敌人造成伤害并击飞(并且距离手雷越近伤害越大击飞越远) 难点:正常情况下我一般都是利用GameObject.FindGameObjectsWithTag()先获取所有的怪物然后计算每个怪物与Player距离,然后再去处理,但明显过于消耗资源 解决办法:public static Collider[] OverlapSphere(Vector3 po...

2018-09-03 18:03:10 5797 1

原创 C#鸡兔同笼(一个笼子里面关了鸡和兔子(鸡有2 只脚,兔子有4 只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物? 请用C#语言实现这个计算过程;)

 public static void Problem1(int a)        {                                      //假设有i只鸡 ,那么最多有a/2只鸡,对每种情况进行分析            int maxI = -1;            int minI = a / 2 + 1;            for (int i =...

2018-08-31 23:25:16 14594 1

原创 Unity打包流程注意事项 File—>Build Setting

打包流程1.打开unity的打包设置界面,File—>Build Setting,如果需要切换的场景在游戏中应用,那么就需要把这个场景添加到Scenes in build 里去;2.打对应的包就需要把工程切换到对应的平台下;打PC平台的包,就要切换到PC平台下(选择PC平台—>点击Switch Plattform按钮)3.Company Name:公司名  Pro...

2018-08-31 22:36:11 18981 1

原创 Buoyancy Effector PointEffector2D sprite Renderer Rigidbody2D

 图片资源Unity支持哪些格式的图片:psd、png、jpg、tiff、tga、GIF等 Texture Type:图片类型:·Default:默认图片,普通图片;Normal map:法线贴图;Editor GUI and Legacy GUI:编辑器的GUI和老版GUI的纹理格式;Sprite:精灵,2D游戏或者UI图片的格式;Cursor:鼠标纹理,在游戏中的鼠标...

2018-08-31 22:34:10 413

原创 射线检测的方法解释

GUILayoutGUILayout.Label("IsGet:" + isGet);//GUILayout自动布局自动布局只考虑当前的OnGUI的函数中的布局,如果有其他的脚本中也存在OnGUI,但是不会考虑 射线Physics中的静态函数,有许多的种类。Physics.Raycast(transform.position, transform.forward);这个...

2018-08-30 17:22:51 1856

原创 怎么创建一个全黑的场景 什么是实时渲染,什么是烘培 将静态的对象烘培可以大大节省DrawCall

怎么创建一个全黑的场景把灯关掉 Window->Lighting->Setting->SkyBoxMaterial中的天空盒,删除 Environment Lighting(环境光照)换成Skybox 摄像机的背景颜色设置成黑色 怎么替换使用天空盒 什么是实时渲染,什么是烘培实时渲染:将物体受到的光照信息实时的进行计算,然后渲染在相应的地方。烘培渲...

2018-08-30 17:21:14 1948 1

原创 物理检测相交球 延迟函数 协程 Unity特殊文件夹

物理检测相交球Collider[] colliders = Physics.OverlapSphere(transform.position, 100,1<<LayerMask.NameToLayer("NPC"));第一参数:搜索的原点,这个原点就是球形检测的圆心;第二个参数:球形检测的半径;第三个参数:固定用法,通过Layer的名字去转化成搜索层 1<&...

2018-08-30 17:19:21 236

原创 Unity3d点乘和叉乘在游戏中运用

1;点乘: 意义:可以判断目标物体是否在我的前方;  Vector3.Dot(transform.forward, Target.position-transform.position)大于零表示在我前面,小于零表示在我后面 等于零表示在我正左边或者正右边。 Vector3.Cross(transform.forward, Target.position - transform.p...

2018-08-30 17:16:09 1415 1

原创 Mathf类和Audio和碰撞和刚体和切换场景

Mathf类Mathf.Clamp(value, min, max)  第一个参数value:被检验的值;Min:当前这个值得取值下限;Max:是当前取值的上限;返回值:value<min的时候返回值等于min,如果value>max值,返回值等于max,如果value处于Min和max之间,返回value。Mathf.Abs(-2):取绝对值; float lerp =  ...

2018-08-30 17:07:58 190

原创 Unity入门之初识引擎界面

界面Hierarchy:层次结构视图,这个视图是用来存放场景(Scene)中所有的物体的。当前会有两个物体(Directional Light:平行光源,一般模拟太阳;Camera:摄像机,玩家所看到的东西,玩家的眼睛)Create Empty:创建空物体,一个点;Create Empty Child:创建空物体,在指定的物体的下方创建一个子物体,如果没有指定的物体,将会在世界中直...

2018-08-30 16:10:21 3118

FreeLayoutGroup.unitypackage

Unity中对子物体的排序我们一般是使用GridLayoutGroup这个组件,但是这个组件会强行将子物体的width和height设置为相同的,但是如果遇到子物体的宽高不同的需求时,这个GridLayoutGroup将不再适用。此时需要我们自定义的编写一套排序子物体的算法(分为子View宽度一致,高度不一致或者高度一致,宽度不一致两种情况)。

2019-06-17

RecyclingScrollRectItem.unitypackage

Unity中对于如排行榜,关卡列表等需要动态生成的列表一般是采用有多少就实例化多少的做法,这样一般情况下是没问题,但如果需要显示很多如上百上千个的话继续采用这种做法会造成内存的浪费,卡顿等。所以此时需要我们编写一套可以随Scroll Rect的滚动来动态调整位置并赋值的算法来满足我们的需求。 使用方法 1.将RecyclingScrollRectItem挂在Scroll View上并初始化各属性; 2.将prefab作为content子物体; 3.在需要创建的时机调用RecyclingScrollRectItem. InitList()方法即可。

2019-06-10

空空如也

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

TA关注的人

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