自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (7)
  • 收藏
  • 关注

原创 unity 正确解压中文Zip文件

在Unity中对含有中文的Zip压缩文件解压真的是挺坑的一件事情。普通C#工程,只要目标框架在.NET Framework 4.5(含)以上版本,只要一行代码就能搞定的事:ZipFile.ExtractToDirectory("zip目录", "解压目录");unity老旧的3.5让它变得难搞,因为没了c#自带解压zip功能,只好转而求助第三方库,ICSharpCode.SharpZip...

2018-09-16 21:30:54 4367 1

原创 unity 动态导入dll与RuntimeInitializeOnLoadMethod的实现

前断时间做项目的时候,发现一个问题:动态导入的dll(即打包成exe后再放入包中的dll),unity提供的特性RuntimeInitializeOnLoadMethod标注的方法没有被调用。代码很简单,只是测试用,如下:namespace TestProject{ public class Test { [RuntimeInitializeOnLoad...

2018-07-28 12:40:16 1288

原创 轻度干眼症

    过去的这两个月,我经历了比之前好几年加起来还更多的绝望,原因很简单,我得了干眼症—一个之前老年人才会得的老年眼病。    之前我跟很多人一样,算是一个重度的手机使用者,虽然在上班的时候不怎么玩,可是在家里,经常吃饭上厕所都要带上它,而且还经常一回到家就开电脑玩。终于突然有一天,我觉得眼睛好痛,是一直持续性的酸痛,滴了药店里买的普通眼药水也不见好转,然后去了眼科医院,医生说我得了轻度的干眼症...

2018-07-08 21:50:45 1583 5

原创 自己实现unity的协程功能

本文需要有一定的C#迭代器基础知识和unity的协程相关的基础知识,如果对这两者不太了解,可以先看下笔者之前的文章:c# yield关键字解析、Unity协程(一):彻底了解yield return null 和 yield return new WaitForSeconds。好的,话不多说,我们直接开始吧:为了方便理解和标识,本例子的类采取My + unity的类名的命名方式。首先我们新建一个名...

2018-05-07 23:41:11 2854

原创 c# 迭代器与yield关键字解析

相信好多程序员都是因为unity的协程(Coroutine)认识yield这个关键字的,知道在unity的开发中诸如yield return null、yield return new WaitForSeconds(1.0f)的用法,其实yield是C#的关键字,unity的协程只是在c#的基础上做了一层封装,我们现在来看看yield这个关键字。说到yield就不得不说迭代器,迭代器模式是设计模式...

2018-05-06 16:10:29 7259

原创 DOTween源码解析

大名鼎鼎的DoTween就不用我多做介绍了,用过Unity的开发者应该都知道,就算没用过也听过。搜索一下DoTween的用法,一找一堆,但是我很奇怪的却没看到有对DoTween的源码分析的帖子(需要下载的请出门右转,搜索DoTween,进入官网进行下载),这里我就抛砖引玉,简单的说说自己的理解。先来看一下我画的DoTween的类图结构:只要明白上面类图中的结构,我认为就差不多搞懂了DoTween的...

2018-04-21 21:14:02 9318 8

原创 unity 易用对象池

好久没写博客了,变懒了,最近想写的东西不多,这次来说说对象池吧。对象池就是缓存池,提前把对象创建出来加入缓存池,需要的时候直接取出来用,删除的时候把物体放入到缓存池而不是真的删除,通过内存来换效率,减少画面的卡顿。对象池是属于项目的底层模块,会被很多地方调用。所以一定得好用(我们得站在使用者的角度上来看),参数应该尽量少,简单明了。接下来我们一步步来制作:1·对象池类肯定是个单例这个没得说了:pu...

2018-03-18 20:05:23 336

原创 c# 你应该知道的List和Dictionary小技巧

List和Dictionary想必是我们平常用到最多的C#容器了,他们使用起来都很简单,所以很多人就可能就没去深究,其实在使用过程中有很多的小技巧能让我们写的代码变得更高效也更安全。1·合理的指定初始容量。List和Dictionary的构造函数都有一个入参为int的构造函数:public Dictionary(int capacity);和public List(int capa

2018-01-27 23:27:19 17173 2

原创 unity JsonUtility泛型缺陷与Newtonsoft.Json

JsonUtility是Unity自带的数据序列化和反序列化工具类。这个类非常简单,一共就只有几个接口,序列化时使用JsonUtility.ToJson ,反序列化时使用JsonUtility.FromJson,FromJson函数支持泛型操作。JsonUtility是个轻量的Json解析工具类,轻量的好处是功能少,使用简单且能满足大部分开发需求。不过稍微复杂一些的可能就没办法了,

2018-01-14 16:57:19 4926

原创 VS2015断点调试神坑之为引用变量赋值为null不成功?

什么情况?明明已经赋值把obj.m_pA赋值为null了,可是为什么单步调试后m_pA却依然有值,而且m_pA.nVal的值还从0变成了1?为了搞明白这个问题,我们先来看下DebugTest的结构:class DebugTest { static int nCount = 0; public DebugTest()

2017-12-17 12:39:20 2645

原创 untiy 脚本API之RectTransformUtility

RectTransformUtility是RectTransform的辅助类,一共就几个接口很好理解。RectTransformUtility.FlipLayoutAxes(RectTransform rect, bool keepPositioning, bool recursive),对传入的RectTransform进行翻转。keepPositioning为true时绕着自身的中

2017-12-10 22:54:13 8756 1

原创 untiy 脚本API之可视化辅助类Gizmos

学习一门引擎,熟悉它的各种API是非常有必要的,不一定都得了如指掌,但是至少应该有所涉猎,这样不管在满足需求也好,解决问题也好,都会很有帮助。一直都有在看,不过很容易忘记,现在开始把它写成博客,好记性不如烂笔头,这样回头翻一翻,回忆起来就容易多了。Gizmos是在scene视图用来可视化调试的辅助工具,所有gizmo的绘制都在OnDrawGizmos或者OnDrawGizm

2017-12-03 22:44:36 2019

原创 unity transform.parent和SetParent效率差了几万倍?

标题虽然有点惊悚,不过真的是事实。发现这个问题,源于我在一次项目代码优化中,发现有一行代码:transform.parent = ***;,竟然耗费了4毫秒!别小看这4毫秒,这意味着只要这一行函数即使其他什么都不做,就可以把帧率直接拉低到250帧,而且这还没算渲染时间,简直可怕。经过排查发现,这竟然是unity的RectTransform的锅,而trasnform并没有这个

2017-11-29 22:25:08 11967 10

原创 unity 搞懂Canvas的Render Mode的三种模式

canvas的Render Mode共有三种模式:Screen Space -OverLay、Screen Space-Camera、World Space。我们先来说Screen Space-Camera,这个了解了,其他模式也就简单了。顾名思义,此模式我们需要一个Camera,这个相机的作用就是把它所投射获取到的界面当做UI界面。一般情况下,UI界面只是一个二维平面,所以把相机

2017-11-12 08:36:32 48170 3

原创 unity Animator Override Controller的使用

这里给大家简单介绍下Animator Override Controller。Animator Override Controller是用来配合Animator Controller使用的,它让Animator Controller变得更加实用,可以让不同的使用实例的在同一状态播放不同的动作,但保留原有的结构、参数和逻辑。  下图是一个简单的Animator Controller:

2017-10-22 07:45:58 13336

原创 unity android真机调试

unity想要真机调试,最重要的一点在于手机和电脑在于同一个网段,同一个网段,同一个网段重要的事情说三遍。过程其实很简单,跟着我一起跟着步骤走就行了。1·手机和电脑连接同一台路由器,或者连接电脑的360wifi。2·用USB线连接电脑与手机。3·打开cmd输入tcpip 5555,目的是通过adb,usb打开设备上的tcpip服务并绑定一个端口。4·输入adb connect 手机的IP地址。

2017-10-14 20:58:06 3419

原创 unity 利用Android Studio实时查看打印日志

在调试android包的时候,我们经常需要实时的查看打印日志,利用android studio可以方便查看unity的各种log。  首先先下个android studio,安装,运行,可以看到如下界面:    选择第一个选项Start a new android Studio Project,然后一路next到底,直至Finish,创建工程完毕。接着用USB连接手机,如下图:

2017-10-12 21:58:02 6055

原创 码云上传小工具

自从用了码云后,感觉太好用了,速度很快,而且还能建私有项目,这两点感觉比gitbub好多了,特别是现在翻墙不是不能用就是速度很慢的情况下。  但是昨天想把一些代码上传上去,遇到了一个问题,感觉有点坑,就是码云不让上传空文件夹,码云的解释是这样的:    上传少量文件是没啥问题,但是数量稍微多一些就吃不消了,而且每次因为空文件夹提交失败都是在提交传输后期,很浪费时间,还是自己写的小工具,

2017-10-10 21:17:55 2096

原创 unity 从头开始制作类dota2小地图

想要做一个类似dota2小地图的功能,但是用了几个插件,感觉并不是我想要的效果,就自己做了个小地图,现在把这部分功能提出来,简单再做记录下。第一步,创建个Plane当作地图表面,再摆放写Cube当作障碍物,如图:淡蓝色的为地图平面,褐色的方块为障碍物,接着分为给地图和障碍物方块设置Wa'l'k

2017-10-06 07:52:12 1832 11

原创 Unity 数值太大导致场景加载卡死问题

在项目制作过程中遇到了个很蛋疼的问题——场景加载卡死。这个问题让项目一个同学查了好久都没真正查出来,各种纠结。而且这bug还不是必现的,有时候抽风一下在某台电脑能重现,有时候又一点问题都没有,隔三差五的冒出来刷一点存在感。后面安排我一起来查这个问题,可能是那天运气比较好吧,搞了一下午,突然间发现有个gameObject的配置文件数据有很大的问题,它的scale的y值竟然高达e^21 !!!虽然

2017-09-17 10:55:05 14995 1

原创 Unity Update与LateUpdate执行顺序之坑

一看到这标题,大家可能会嗤之一笑,因为Update和LateUpdate的执行顺序应该是一件非常明了的事情,既然都叫LateUpdate了难道还能在Update之前执行不成?回答这个问题之前,我们来看一张Unity的执行顺序图:这边也明确的表明了Update一定在LateUpdate之前执行,我们可以先写些代码来测试一下:public class OldCom : MonoBe

2017-09-16 21:47:42 12916

原创 c# Conditional用法详解

百度了一下关于conditional的文章,大都说的都是非常浅显,只是老生常谈了下尽量多使用conditional而少用#if,收获不大。现在我自己测试了一下,也查阅了MSDN,有点心得,说出来与大家分享。Conditional其实是一个属性类:ConditionalAttribute的简称。可应用于方法或者属性类。最常见的用法想必大家都知道:[Conditional("CONDITI

2017-08-26 16:43:03 19122

原创 c# Queue源码解析

Queue是c#的泛型队列类,跟Stack、List等容易一样,它的内部也是由数组来实现的,主要为使用者提供了Enqueue()、Peek()、Dequeue()、Contains()、GetElement()等接口来进行使用。下面我们会逐个来进行分析,先来看下Queue的类头:public class Queue : IEnumerable, System.Collectio

2017-08-19 08:47:20 1726 2

原创 c# Stack源码解析

Stack是个泛型栈类,内部的实现很简单,就是用数组实现的,主要提供了Push(),Pop(),Peek(),ToArray(),CopyTo()等方法提供给使用者使用,话不多说,我们先来看看Stack的类头:public class Stack : IEnumerable, System.Collections.ICollection, IReadOnl

2017-08-13 22:10:37 794

原创 c#HashSet源码解析

看到HashSet源码的时候,我惊了一下,因为我发现HashSet的内部实现跟Dictionary几乎是一模一样的,传送门:抛除C++旧印象(二):C#Dictionary源码剖析。差别仅在于HashSet没有key,只有value,所以存储的时候是用value的HashCode值进行判断。我们先来看下HashSet类开始部分的代码(经过我稍微的整理):public class Has

2017-08-06 12:06:45 3456 3

原创 抛除C++旧印象(二):C#Dictionary源码剖析

C++中STL的Map跟C#的Dictionary的使用几乎是一样的,Map使用的是红黑树来实现,所以想当然的以为C#的Dictionary也是红黑树,老兄,那可真就大错特错了。我也是有次没事去看下Dictionary的实现才发现压根就没有树的影子,原来使用散列表的方式来实现。下面我们一起来看下Dictionary的内部实现:

2017-07-30 21:06:44 1714

原创 抛除C++旧印象(一):C#List源码剖析

项目中的好多同学都是之前写C++的,用了unity之后才开始写C#代码,虽然说转过来很轻松,但是往往会把C++的惯性思维带过来,不自觉的就认为C#跟C++一样。    项目在写一个接口的时候,需要根据index返回list中的元素,因为原先这个接口有效率问题,所以我们在改的时候也比较谨慎,有同学提出,如果用List也是不高效的,因为在index大的时候,需要从到到位进行链表查找,效率必定不尽如

2017-07-30 11:54:51 913 2

原创 Unity协程(一):彻底了解yield return null 和 yield return new WaitForSeconds

unity的协程毫无疑问是个非常棒的设计,但是也存在着一些坑和一些误区。

2017-05-23 22:09:23 57450 6

原创 第一次写博客

程序员都是很懒的,要查资料很简单,谷歌百度一下就解决了,不过要叫他们写文字分享这就很难为他们了,老感觉这种事情没啥意义,对技术也没提高,懒得动,文字能力也不行,我就是其中一员,唉,对比我也表示很绝望啊。  不过今天下午我突然间心血来潮----“我也要写博客!!!”起因是《Unity 3D脚本编程——使用C#语言开发跨平台游戏》这书的作者也是一开始懒得写,然后逼着自己坚持了两年,书都出了,突然间

2017-05-23 21:46:45 543

跨越软件设计师考试精讲精练

跨越软件设计师考试精讲精练,zszszszszszszszszszszs

2017-10-12

软件设计师考试考点突破、程序设计、实战练习一本通

600页的文档,非常的详细,良心资源,下载完后不后悔,好好努力,加油。

2017-10-12

架构之美(高清)

架构之美高清版,经典好书,他们都好贵啊,我这个是最便宜的了。

2017-10-08

2013-2016年上、下半年软件设计师真题与答案

2013-2016年上、下半年软件设计师真题与答案,不忽悠。

2017-10-03

2017 年上半年(上午+下午)软件设计师真题及答案解析下载

2017 年上半年(上午+下午)软件设计师真题及答案解析,不忽悠

2017-10-03

c#自动录音

本程序有着自动录音的功能,当声音大小达到一定要求时,录音会自动开启,同时能够显示录音音量和选择不同的音质。

2012-04-10

mfc控件资源综合例子

这个例子主要介绍了一些mfc主要控件的综合运用例子,希望对初学者有所帮助。

2011-07-28

空空如也

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

TA关注的人

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