Unity3D
文章平均质量分 76
NxShow
努力学习中
展开
-
【UGUI】基于Mesh的单一图片裁剪
参考了这篇文章:https://www.cnblogs.com/leoin2012/p/6425089.html这篇文章的源码在这里:https://github.com/HanxianshengGame/UGUI_CircleImage/blob/master/SampleScene/Assets/_MyScripts/Example%202.1/CircleImageSolution%20...原创 2019-12-29 00:29:30 · 862 阅读 · 1 评论 -
基于UDP的帧同步网络方案(基础)
帧同步会高频次的上报和下发逻辑帧,所以网络方案非常重要,TCP协议的优势在于有序、可靠、有连接,但是由于较为保守的超时重传方案、过大的包头,会给帧同步带来比较高的延迟和较大的数据流量,而UDP是较为精简的网络协议,不保证时序、不保证可靠性、无连接,但是这些都可以自行实现、定制,并且包头较小,可以说是帧同步较为理想的网络协议。但是直接用UDP的话,肯定是不能满足帧同步的需求的,帧同步...原创 2019-10-20 01:21:28 · 4082 阅读 · 1 评论 -
[Unity]Unity性能优化实战之GC优化(1)
首先说一下非常简单的New GC,创建一个类 public class A { string b; }在Update函数中这样调用: void Update () { UpdateNewGC(); } void UpdateNewGC() { A a = new A(); }会原创 2017-03-09 17:57:01 · 758 阅读 · 0 评论 -
推荐一个博客,说Unity Shader的
http://blog.csdn.net/candycat1992第一次知道这个博客的时候是搜 卡通渲染的时候搜到的,当时并不是太在意。接下来我要为我们的卡通渲染shader做一些优化,尽量接近崩坏3的效果,结果又搜到了这篇博客,发现它说卡通渲染的居然有一个系列的文章。仔细看下去,这位博主居然还是个研究生,服再看一下介绍,博主居然是个妹纸,膜拜擦亮了一下眼睛,博主居然出原创 2017-05-24 10:26:26 · 1196 阅读 · 1 评论 -
Unity引用自己编译的动态dll遇到的问题
在项目中,有一些代码长期不会改的,想要做成一个dll节省时间,于是就用vs2017新建了dll项目,引用UnityEngine.dll,也顺利的编译出来了,但是导入到unity中却遇到了这么一个问题Internal compiler error. See the console log for more information. output was:,,,,解原创 2017-11-29 12:27:55 · 2505 阅读 · 0 评论 -
NGUI Panel Soft Clip原理分析
这一块我之前一直看得不是很懂,前几个月有一次做粒子裁剪的时候想模仿做,没有做出来,只能靠着很挫的if来判断。这几天又有一个需求想实现图片的裁剪,不可能一个图片一个panel吧,所以就想到了自己实现Clip Sprite。在这里先分析一下Ngui Panel的软裁剪是怎么实现的。我之前没有看懂的原因是,NGUI对这块做了大量的优化,单独看一行代码,或者一个公式是看不出什么的,单独看shader也原创 2017-06-05 11:22:41 · 4432 阅读 · 2 评论 -
NGUI裁剪粒子的实现,完全仿照原有的NGUI SoftClip逻辑思路,可多层裁剪
参照http://blog.csdn.net/tkokof1/article/details/52107736 这一篇博客但是他只实现了单层panel的裁剪,虽然他的算法和NGUI的思路是一致的,但是由于传入Shader的值不同,所以不太好移植成多层Panel裁剪。我重新对他的思路进行整理了,并且将值统一为NGUI的规则,传入的值都用_ClipRange0和_ClipArgs0表示。首先是C#原创 2017-12-23 17:06:50 · 1670 阅读 · 1 评论 -
真机加载AssetBundle闪退,报[Position out of bounds! 1036672174 > 2705600]的解决办法
原因是我们项目今天有个美术上传了本地修改的meta文件,应该是导致了两个资源的GUID冲突了,最后读文件的时候读取到其他的文件去了,解决方案是全部重新Import一次,或者把Library目录删掉 重新打开Unity,或者还原这几个Meta文件原创 2017-12-26 14:32:22 · 3579 阅读 · 1 评论 -
UNITY NGUI IPHONEX完美适配
苹果的IphoneX新增一个安全区的概念,如下图图中绿色区域为安全区,所有可交互的组件全部放在安全区内,只有背景可以延伸出去,达到全面屏的效果我们适配IphoneX采用NGUI通用的锚点去适配。默认的NGUI屏幕适配方案不支持安全区这个概念,我在NGUI每个继承UIRect的组件下新增一个Bool变量InSafeArea,这个变量如果为True则表示这个组件是放置在安全区内的,如果为false则表...原创 2018-03-14 10:58:37 · 4022 阅读 · 5 评论 -
解决Mac执行Mono的EXE的问题
因为我们之前都没有考虑到Mac的打包,打包流程都在windows下走的,所有没有考虑到mac下的兼容性问题,今天打mac包发现有部分功能失效了,仔细看发现报了一个Win32的错,如下:"/Volumes/UnityForGame/Game/Client/Assets/Scripts/Game Logic" "/Volumes/UnityForGame/Game/Client/Assets/Scri...原创 2018-03-20 17:42:28 · 7168 阅读 · 0 评论 -
Unity Update的节点执行顺序
测试一下Update的节点执行顺序,对于想要自己管理Update的有帮助代码如下using UnityEngine;using System.Collections;public class UpdateTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is c...原创 2018-03-26 17:11:54 · 3028 阅读 · 1 评论 -
XLua踩坑
Xlua接入需要反射出所有需要热更新的类,标记上[Hotfix]这样的特性,刚开始我想的是通过代码生成的方式 生成cs文件 类似下图:但是这种行为会导致几个问题,其一就是项目组成员遇到删除类的时候,需要同步的将这个文件中的类引用也删除掉。另外一个,打包的时候,由于生成的代码在编辑器下运行,新生成的代码并没有编译出来,导致编辑器可能用的是上一版本的代码,造成热更新的不确定性。修改后使用反射做这件事情...原创 2018-06-05 10:12:53 · 2519 阅读 · 0 评论 -
【面经】腾讯U3d面试面经 帧同步方向 (一)帧同步如何解决不同步的问题?
解决不同步问题首先考虑什么是不同步的问题,为什么会出现不同步的情况。那么什么是不同步的问题呢?帧同步是由客户端计算,发送命令给服务器,服务器转发命令达到两边客户端显示一致。服务器是不知道具体逻辑的,所以如果两边客户端计算的某些变量出现不一致的时候,就会出现不同步的情况,随着时间的推进,一个小小的不同步也会造成滚雪球效应,最后的结果可能就南辕北辙了。所以为什么会出现不同步的情况,也很好解释了...原创 2019-03-10 20:11:38 · 5447 阅读 · 2 评论 -
【面经】腾讯U3d面试面经 帧同步方向(总)
近期拿到了一个腾讯的offer,记录一下面试过程。我找的内推,面试的流程如下:上传内推简历,接着马上被HR转到项目组里面,一个小时左右面试官电话过来约面,接着电话面,然后去科兴面,最后HR面,OFFER到手。总的来说腾讯的面试流程还是挺简洁的,听说有人面了很多很多面,我没有遇到这种情况,不过最后给offer时间间隔太久了,一周半才确认。两轮技术面试都是在问帧同步相关的问题,所...原创 2019-03-07 21:31:54 · 7181 阅读 · 2 评论 -
【unity】动态图集 dynamic atlas (runtime atlas)
不管NGUI还是UGUI,图集都是在制作期间就生成了的,运行时是一张大图,这样做的好处在于我们可以在一定程度上去合并批次,但是图集通常在制作过程中,会分成commonatlas和系统atlas两类,一个界面prefab至少会用到两张图集,就会出现ABA的图集穿插打断合批的情况。还有一种游戏内容多了以后,各种图片也相应的变多,类似图标、commonatlas这种图集,一张2048x2048可能就放不...原创 2019-05-31 23:57:55 · 14082 阅读 · 0 评论 -
[Unity]Unity性能优化实战之GC优化(序)
近期项目即将上线,为了抗住数量众多的玩家,流畅的进行多人同屏对战,我们不得不对游戏进行一次彻底的优化。这个系列就是我对于此次优化的一些总结吧。首先优化是足够了解原理的基础上并且辅以相应的工具才能顺利进行,在优化GC里,我们用到了Unity自带的Profiler,这是一个非常优秀的工具,不仅仅支持编辑器下的调试,还可以看到在设备上的信息。那么,为什么要进行GC优化呢?因为GC原创 2017-03-09 17:33:14 · 2886 阅读 · 0 评论 -
【Unity】协程
好久没有来更新博客了,快一年了吧,主要是上班之后就一直在加班啊.... 就没有时间写博客,看书倒一直没有中断。工作后的项目一直在用cocos2dx来做,也没有什么比较值得拿出来分享的,下一个项目 组里面打算用Unity来做,所以就稍微再研究一下Unity。我打算做一个脱离Unity的底层库,但是Unity也可以用,所以不可避免的就需要重复造一些轮子,所以这次打算造的轮子是U原创 2016-04-03 14:56:38 · 563 阅读 · 0 评论 -
【和我一起学习Unity3D】初识脚本编程
在我的理解中Unity3D是基于原创 2014-10-23 22:14:29 · 2252 阅读 · 0 评论 -
【和我一起学习Unity3D】Unity3D的坐标控制
坐标这个东西,在Unity3D里面是分为几个类的,分别是Vector2,Vector3,Vector4;含义分别是:二维坐标系,三维坐标系,四维坐标系,一般做游戏呢,用到的最多的就是Vector3了,这篇文章主要讲的也是这个。一般一个场景中,有X轴,Y轴,Z轴三个轴,以默认的坐标来说 X轴控制左右,Y轴控制上下,Z轴控制前后。在这里有一个函数值得特别说明一下,就是transform组件里面原创 2014-10-24 20:57:44 · 1903 阅读 · 0 评论 -
【和我一起学习Unity3D】初识物理系统
要让一个GameObject成为一个物理系统的成员,首先他必须是一个刚体(Rigidbody),然后,他必须有碰撞域(Collider)。添加完这两个组件(Component)之后,值得注意的就是刚体的IsKinematic这个属性,这个属性是表示他的移动只能由脚本所控制,比如墙壁等,就需要勾上这个。另外一个属性是碰撞域的IsTrigger,这个属性标志着这个GameObject的碰撞处理方式,勾原创 2014-10-27 21:09:42 · 1505 阅读 · 0 评论 -
【跟我一起学Unity3D】代码中切割图片并且加载帧序列动画
在Cocos2dx中,对大图的处理已经封装好了一套自己的API,但是在Unity3D中貌似没有类似的API,或者说我没找到。不过这也在情理之中,毕竟Unity3D是做3D的,要切割图片的地方还是很少的。因为我用Unity3D主要是用于做2D游戏的(PS:很蛋疼吧?我也觉得),所以就不得不考虑切图和播放序列帧这两个在2D上常见的功能了,下面废话不多说。我的任务是把下面这张图切割成16块,并且按照原创 2014-10-28 21:03:21 · 6359 阅读 · 3 评论 -
【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统
对于AI,我的初始想法很简单,首先他要能动,并且是在地图里面动, 懂得撞墙后转弯,然后懂得射击,其他的没有了,基于这个想法,我首先创建了一个MyTank类,用于管理玩家的坦克的活动,然后创建AITank类,AITank类继承MyTank类,这样的话,在AITank类上,只需要增加AI就可以了,具体的状态机实现,就放到MyTank类上即可。首先来分析一下MyTank这个类,就从有限状态机开始吧。原创 2014-11-01 11:08:41 · 4984 阅读 · 2 评论 -
【跟我一起学Unity3D】做一个2D的90坦克大战之各种各样的墙<<附上项目源码>>
最后一个就是各种原创 2014-11-02 21:34:05 · 4683 阅读 · 1 评论 -
【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器
从10月20号到现在,Unity3D也学了10天了,对于Unity3D也有了一个大致的了解,有必要做一个小游戏来检测一下自己的学习成果了。经过两天的努力,终于总算是做出来了一个可以玩的坦克大战了。首先讲讲我的设计目标:1.地图编辑器2.道具系统3.简单AI系统4.计分器其中,最重要的就是地图编辑器了,其次到AI系统,其他几个都挺简单的。----------------------原创 2014-10-31 21:20:10 · 5207 阅读 · 1 评论 -
【跟我一起学Unity3D】做一个2D的90坦克大战之导演以及道具系统
做游戏我还是习惯用一个导演类来控制游戏的进程,比如游戏的开始和结束,游戏的AI的产生,游戏的地图的绘制等等都放置在这么一个导演类里面。然后这个导演类我把它放在MainCamera里面,作为它的组件。首先在Start里面,需要初始化一些游戏的数据,例如读取地图,初始化AI等 void Start() { //初始化数据 m_iAICurTankCount原创 2014-11-02 17:13:22 · 3505 阅读 · 0 评论 -
【Unity】线程安全的消息传输机制,仿照Cocos实现
近期用到了网络通信的方法,虽然unity可以用协程来实现异步操作,不过坑爹的队友不会用,他用的是传统的开线程的方法,这样就会出现线程安全的问题,然后现有的消息通信机制无法满足需求了,就得改了。还好我机智的看过Cocos2dx中消息机制的实现原理,顺手改了一下,下面贴源码:(源码后有解释)using System;using System.Collections;using System.C原创 2015-01-11 12:28:24 · 1470 阅读 · 3 评论 -
【TGUI】从零开始搭建一个基于Unity的UI库 01
作为一个初学Unity3D一个来月的小菜鸟,要想自己搭建一个UI库也是挺疯狂的,但是老大不给用NGUI,然后那时候Unity4.6正式版还没发布(或者说我还不知道Unity4.6有自带UI),然后就无所畏惧的写下来了,目前虽然功能很简陋,实现的控件也非常少,但是作为练手的目的已经达成了,所以放上来给大家分享。-----------------------------------------原创 2014-12-08 19:36:13 · 2709 阅读 · 0 评论 -
【TGUI】从零开始搭建一个基于Unity的UI库 02 button控件的实现(1)
按钮控件作为最常用的控件之一。为了满足项目的要求,我做了3种按钮控件,分别是普通按钮控件CGUIButton,文本按钮控件CGUITextButton和复杂按钮控件CGUIComplexButton,单选按钮CGUICheckBox以及单选按钮组。普通按钮控件是最简单的按钮控件,它实现了鼠标移入、移出、点击、松开按钮的图片变换。由于同学已经将各种鼠标点击、移入、移出等封装成了C#的事件,所以实原创 2014-12-08 19:59:28 · 1096 阅读 · 0 评论 -
【Unity】理解协程的原理1——实现一个自己的WaitForSeconds
协程的所能达到的效果就是在指定的时间点上执行需要执行的代码,Unity中开始一个协程的函数是StartCoroutine,而提供的延迟的类有以下几种分别是 new WaitForEndOfFrame; //等待一帧 new WaitForFixedUpdate; //等待一个FixedUpdate(固定时间间隔)原创 2015-02-08 11:56:09 · 2872 阅读 · 0 评论 -
【Unity&C#】运行在主线程的Socket
通常的Socket都是通过多线程的方式来实现的,多线程需要确保线程安全,而且代码量也会相对多一些,由于之前已经实现了Unity的协程功能,现在就可以通过协程来实现单线程的Socket了。首先,封装一下C#的Socket。using System;using System.Collections.Generic;using System.Linq;using System.Text;usin原创 2016-04-05 20:13:01 · 3720 阅读 · 1 评论 -
【Unity&C#】写了一个事件分发器
我一直都有一个需求,就是可以很方便的将Socket传进来的二进制解析到具体的某个消息,每个消息都有自己的事件处理。之前有写过一个这样的,但是事件处理必须写在各个消息类里面,这样不是很好。现在借着C#的泛型协变的这个特性,做了一个强类型的事件分发器。using System;using System.Collections.Generic;using System.Linq;usi原创 2016-04-04 21:01:56 · 1752 阅读 · 0 评论 -
【和我一起学习Unity3D】初识Unity3D
首先,我也是第二天学习Unity3D,所以这篇系列也是算作我的学习笔记,同时也是我第一篇系列wen原创 2014-10-22 14:59:10 · 1184 阅读 · 0 评论