<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fdyshlk的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fdyshlk</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fdyshlk]]></copyright><item><title><![CDATA[unity 正确解压中文Zip文件]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/82729893</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/82729893</guid><author>fdyshlk</author><pubDate>Sun, 16 Sep 2018 21:30:54 +0800</pubDate><description><![CDATA[在Unity中对含有中文的Zip压缩文件解压真的是挺坑的一件事情。普通C#工程，只要目标框架在.NET Framework 4.5（含）以上版本，只要一行代码就能搞定的事：


ZipFile.ExtractToDirectory(&quot;zip目录&quot;, &quot;解压目录&quot;);

unity老旧的3.5让它变得难搞，因为没了c#自带解压zip功能，只好转而求助第三方库，ICSharpCode.SharpZip...]]></description><category></category></item><item><title><![CDATA[unity 动态导入dll与RuntimeInitializeOnLoadMethod的实现]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/81194030</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/81194030</guid><author>fdyshlk</author><pubDate>Sat, 28 Jul 2018 12:40:16 +0800</pubDate><description><![CDATA[前断时间做项目的时候，发现一个问题：动态导入的dll（即打包成exe后再放入包中的dll），unity提供的特性RuntimeInitializeOnLoadMethod标注的方法没有被调用。

代码很简单，只是测试用，如下：


namespace TestProject
{
    public class Test
    {
        [RuntimeInitializeOnLoad...]]></description><category></category></item><item><title><![CDATA[轻度干眼症]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/80963187</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/80963187</guid><author>fdyshlk</author><pubDate>Sun, 08 Jul 2018 21:50:45 +0800</pubDate><description><![CDATA[    过去的这两个月，我经历了比之前好几年加起来还更多的绝望，原因很简单，我得了干眼症—一个之前老年人才会得的老年眼病。    之前我跟很多人一样，算是一个重度的手机使用者，虽然在上班的时候不怎么玩，可是在家里，经常吃饭上厕所都要带上它，而且还经常一回到家就开电脑玩。终于突然有一天，我觉得眼睛好痛，是一直持续性的酸痛，滴了药店里买的普通眼药水也不见好转，然后去了眼科医院，医生说我得了轻度的干眼症...]]></description><category></category></item><item><title><![CDATA[自己实现unity的协程功能]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/80232830</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/80232830</guid><author>fdyshlk</author><pubDate>Mon, 07 May 2018 23:41:11 +0800</pubDate><description><![CDATA[本文需要有一定的C#迭代器基础知识和unity的协程相关的基础知识，如果对这两者不太了解，可以先看下笔者之前的文章：c# yield关键字解析、Unity协程（一）：彻底了解yield return null 和 yield return new WaitForSeconds。好的，话不多说，我们直接开始吧：为了方便理解和标识，本例子的类采取My + unity的类名的命名方式。首先我们新建一个名...]]></description><category></category></item><item><title><![CDATA[c# 迭代器与yield关键字解析]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/80215192</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/80215192</guid><author>fdyshlk</author><pubDate>Sun, 06 May 2018 16:10:29 +0800</pubDate><description><![CDATA[相信好多程序员都是因为unity的协程（Coroutine）认识yield这个关键字的，知道在unity的开发中诸如yield return null、yield return new WaitForSeconds(1.0f)的用法，其实yield是C#的关键字，unity的协程只是在c#的基础上做了一层封装，我们现在来看看yield这个关键字。说到yield就不得不说迭代器，迭代器模式是设计模式...]]></description><category></category></item><item><title><![CDATA[DOTween源码解析]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/80031574</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/80031574</guid><author>fdyshlk</author><pubDate>Sat, 21 Apr 2018 21:14:02 +0800</pubDate><description><![CDATA[大名鼎鼎的DoTween就不用我多做介绍了，用过Unity的开发者应该都知道，就算没用过也听过。搜索一下DoTween的用法，一找一堆，但是我很奇怪的却没看到有对DoTween的源码分析的帖子（需要下载的请出门右转，搜索DoTween，进入官网进行下载），这里我就抛砖引玉，简单的说说自己的理解。先来看一下我画的DoTween的类图结构：只要明白上面类图中的结构，我认为就差不多搞懂了DoTween的...]]></description><category></category></item><item><title><![CDATA[unity 易用对象池]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/79601322</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/79601322</guid><author>fdyshlk</author><pubDate>Sun, 18 Mar 2018 20:05:23 +0800</pubDate><description><![CDATA[好久没写博客了，变懒了，最近想写的东西不多，这次来说说对象池吧。对象池就是缓存池，提前把对象创建出来加入缓存池，需要的时候直接取出来用，删除的时候把物体放入到缓存池而不是真的删除，通过内存来换效率，减少画面的卡顿。对象池是属于项目的底层模块，会被很多地方调用。所以一定得好用（我们得站在使用者的角度上来看），参数应该尽量少，简单明了。接下来我们一步步来制作：１·对象池类肯定是个单例这个没得说了：pu...]]></description><category></category></item><item><title><![CDATA[c# 你应该知道的List和Dictionary小技巧]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/79178432</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/79178432</guid><author>fdyshlk</author><pubDate>Sat, 27 Jan 2018 23:27:19 +0800</pubDate><description><![CDATA[List和Dictionary想必是我们平常用到最多的C#容器了，他们使用起来都很简单，所以很多人就可能就没去深究，其实在使用过程中有很多的小技巧能让我们写的代码变得更高效也更安全。


1·合理的指定初始容量。
List和Dictionary的构造函数都有一个入参为int的构造函数：public Dictionary(int capacity);和public List(int capa]]></description><category></category></item><item><title><![CDATA[unity JsonUtility泛型缺陷与Newtonsoft.Json]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/79055744</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/79055744</guid><author>fdyshlk</author><pubDate>Sun, 14 Jan 2018 16:57:19 +0800</pubDate><description><![CDATA[JsonUtility是Unity自带的数据序列化和反序列化工具类。这个类非常简单，一共就只有几个接口，序列化时使用
﻿﻿
JsonUtility.ToJson ，反序列化时使用JsonUtility.FromJson，FromJson函数支持泛型操作。
JsonUtility是个轻量的Json解析工具类，轻量的好处是功能少，使用简单且能满足大部分开发需求。不过稍微复杂一些的可能就没办法了，]]></description><category></category></item><item><title><![CDATA[VS2015断点调试神坑之为引用变量赋值为null不成功？]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78824209</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78824209</guid><author>fdyshlk</author><pubDate>Sun, 17 Dec 2017 12:39:20 +0800</pubDate><description><![CDATA[什么情况？明明已经赋值把obj.m_pA赋值为null了，可是为什么单步调试后m_pA却依然有值，而且m_pA.nVal的值还从0变成了1？为了搞明白这个问题，我们先来看下DebugTest的结构：
class DebugTest
    {
        static int nCount = 0;
        public DebugTest()]]></description><category></category></item><item><title><![CDATA[untiy 脚本API之RectTransformUtility]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78768078</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78768078</guid><author>fdyshlk</author><pubDate>Sun, 10 Dec 2017 22:54:13 +0800</pubDate><description><![CDATA[RectTransformUtility是RectTransform的辅助类，一共就几个接口很好理解。


RectTransformUtility.FlipLayoutAxes(RectTransform rect, bool keepPositioning, bool recursive)，对传入的RectTransform进行翻转。keepPositioning为true时绕着自身的中]]></description><category></category></item><item><title><![CDATA[untiy 脚本API之可视化辅助类Gizmos]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78704745</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78704745</guid><author>fdyshlk</author><pubDate>Sun, 03 Dec 2017 22:44:36 +0800</pubDate><description><![CDATA[学习一门引擎，熟悉它的各种API是非常有必要的，不一定都得了如指掌，但是至少应该有所涉猎，这样不管在满足需求也好，解决问题也好，都会很有帮助。


一直都有在看，不过很容易忘记，现在开始把它写成博客，好记性不如烂笔头，这样回头翻一翻，回忆起来就容易多了。


Gizmos是在scene视图用来可视化调试的辅助工具，所有gizmo的绘制都在OnDrawGizmos或者OnDrawGizm]]></description><category></category></item><item><title><![CDATA[unity  transform.parent和SetParent效率差了几万倍？]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78670321</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78670321</guid><author>fdyshlk</author><pubDate>Wed, 29 Nov 2017 22:25:08 +0800</pubDate><description><![CDATA[标题虽然有点惊悚，不过真的是事实。


发现这个问题，源于我在一次项目代码优化中，发现有一行代码：transform.parent = ***;，竟然耗费了4毫秒！别小看这4毫秒，这意味着只要这一行函数即使其他什么都不做，就可以把帧率直接拉低到250帧，而且这还没算渲染时间，简直可怕。


经过排查发现，这竟然是unity的RectTransform的锅，而trasnform并没有这个]]></description><category></category></item><item><title><![CDATA[unity 搞懂Canvas的Render Mode的三种模式]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78509909</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78509909</guid><author>fdyshlk</author><pubDate>Sun, 12 Nov 2017 08:36:32 +0800</pubDate><description><![CDATA[canvas的Render Mode共有三种模式：Screen Space -OverLay、Screen Space-Camera、World
 Space。


我们先来说Screen Space-Camera，这个了解了，其他模式也就简单了。顾名思义，此模式我们需要一个Camera，这个相机的作用就是把它所投射获取到的界面当做UI界面。一般情况下，UI界面只是一个二维平面，所以把相机]]></description><category></category></item><item><title><![CDATA[unity Animator Override Controller的使用]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78307864</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78307864</guid><author>fdyshlk</author><pubDate>Sun, 22 Oct 2017 07:45:58 +0800</pubDate><description><![CDATA[这里给大家简单介绍下Animator Override Controller。
Animator Override Controller是用来配合Animator Controller使用的，它让Animator Controller变得更加实用，可以让不同的使用实例的在同一状态播放不同的动作，但保留原有的结构、参数和逻辑。
　　下图是一个简单的Animator Controller：]]></description><category></category></item><item><title><![CDATA[unity android真机调试]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78236810</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78236810</guid><author>fdyshlk</author><pubDate>Sat, 14 Oct 2017 20:58:06 +0800</pubDate><description><![CDATA[unity想要真机调试，最重要的一点在于手机和电脑在于同一个网段，同一个网段，同一个网段重要的事情说三遍。
过程其实很简单，跟着我一起跟着步骤走就行了。1·手机和电脑连接同一台路由器，或者连接电脑的360wifi。2·用USB线连接电脑与手机。3·打开cmd输入tcpip 5555，目的是通过adb，usb打开设备上的tcpip服务并绑定一个端口。4·输入adb connect 手机的IP地址。]]></description><category></category></item><item><title><![CDATA[unity 利用Android Studio实时查看打印日志]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78220380</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78220380</guid><author>fdyshlk</author><pubDate>Thu, 12 Oct 2017 21:58:02 +0800</pubDate><description><![CDATA[在调试android包的时候，我们经常需要实时的查看打印日志，利用android studio可以方便查看unity的各种log。
　　首先先下个android studio，安装，运行，可以看到如下界面：
　　
　　选择第一个选项Start a new android Studio Project，然后一路next到底，直至Finish，创建工程完毕。接着用USB连接手机，如下图：]]></description><category></category></item><item><title><![CDATA[码云上传小工具]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78197611</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78197611</guid><author>fdyshlk</author><pubDate>Tue, 10 Oct 2017 21:17:55 +0800</pubDate><description><![CDATA[自从用了码云后，感觉太好用了，速度很快，而且还能建私有项目，这两点感觉比gitbub好多了，特别是现在翻墙不是不能用就是速度很慢的情况下。
　　但是昨天想把一些代码上传上去，遇到了一个问题，感觉有点坑，就是码云不让上传空文件夹，码云的解释是这样的：
　　
　　上传少量文件是没啥问题，但是数量稍微多一些就吃不消了，而且每次因为空文件夹提交失败都是在提交传输后期，很浪费时间，还是自己写的小工具，]]></description><category></category></item><item><title><![CDATA[unity 从头开始制作类dota2小地图]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78163713</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78163713</guid><author>fdyshlk</author><pubDate>Fri, 06 Oct 2017 07:52:12 +0800</pubDate><description><![CDATA[想要做一个类似dota2小地图的功能，但是用了几个插件，感觉并不是我想要的效果，就自己做了个小地图，现在把这部分功能提出来，简单再做记录下。
第一步，创建个Plane当作地图表面，再摆放写Cube当作障碍物，如图：

淡蓝色的为地图平面，褐色的方块为障碍物，接着分为给地图和障碍物方块设置Wa'l'k]]></description><category></category></item><item><title><![CDATA[Unity 数值太大导致场景加载卡死问题]]></title><link>https://blog.youkuaiyun.com/fdyshlk/article/details/78008925</link><guid>https://blog.youkuaiyun.com/fdyshlk/article/details/78008925</guid><author>fdyshlk</author><pubDate>Sun, 17 Sep 2017 10:55:05 +0800</pubDate><description><![CDATA[在项目制作过程中遇到了个很蛋疼的问题——场景加载卡死。这个问题让项目一个同学查了好久都没真正查出来，各种纠结。而且这bug还不是必现的，有时候抽风一下在某台电脑能重现，有时候又一点问题都没有，隔三差五的冒出来刷一点存在感。
后面安排我一起来查这个问题，可能是那天运气比较好吧，搞了一下午，突然间发现有个gameObject的配置文件数据有很大的问题，它的scale的y值竟然高达e^21 ！！！虽然]]></description><category></category></item></channel></rss>