<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JohnBlu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/JohnBlu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JohnBlu]]></copyright><item><title><![CDATA[常用设计模式概要]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/83621361</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/83621361</guid><author>JohnBlu</author><pubDate>Fri, 29 Jan 2021 12:59:23 +0800</pubDate><description><![CDATA[设计模式之于程序员 好比 内功心法之于武林中人，了然于胸是我们最基本的素养。

简单工场模式 将行为或者功能封装成对象，所谓工场即是生产这些对象的地方
策略模式  封装了多个同类别功能对象的整合对象，策略对象即是选取具体行为的对象
装饰模式  有效地把类的核心职责和装饰功能区分开来，而且可以去除相关类中重复的装饰逻辑
代理模式  在访问真实对象之前引入一定...]]></description><category></category></item><item><title><![CDATA[Ray Marching]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/107229365</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/107229365</guid><author>JohnBlu</author><pubDate>Thu, 09 Jul 2020 15:18:34 +0800</pubDate><description><![CDATA[Ray Marching


这是一个可以运行在ShaderToy上的简单例子


#define fov 60.0
#define camPosition vec3(0.0, 0.0, -4.0)

#define sphereCenter vec3(0,0,0)
#define sphereRadius 1.0

float dist_estimator(in vec3 pos)
{
    return length(pos - sphereCenter) - sphereRadius;
}

fl.]]></description><category></category></item><item><title><![CDATA[事件中心的例子]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/104249315</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/104249315</guid><author>JohnBlu</author><pubDate>Mon, 10 Feb 2020 15:46:28 +0800</pubDate><description><![CDATA[定义委托类型

public delegate void Callback();
public delegate void Callback&lt;T&gt;(T arg1);
public delegate void Callback&lt;T, U&gt;(T arg1, U arg2);

这里的参数数量可以继续添加，看需求。

public static Dictionary&lt;EGa...]]></description><category></category></item><item><title><![CDATA[Unity控制渲染顺序]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/103782778</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/103782778</guid><author>JohnBlu</author><pubDate>Tue, 31 Dec 2019 15:21:14 +0800</pubDate><description><![CDATA[Overlay的Canvas有个SortOrder的排序，这个只针对于所有OverlayCanvas之间的渲染排序，值越大渲染时机越晚。同时，OverlayCanvas的所有UI对象，都是覆盖在所有3D对象之上的（包括特效）。所以特效要在UI之上，那么UI必须在世界空间的Canvas画布节点下。
 针对于所有的非OverlayCanvas渲染对象，包括3D物体，影响它们渲染顺序有三个...]]></description><category></category></item><item><title><![CDATA[Unity自定义材质面板]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/98209162</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/98209162</guid><author>JohnBlu</author><pubDate>Mon, 05 Aug 2019 10:07:04 +0800</pubDate><description><![CDATA[常见属性类型


UnityShader Properties常见的属性类型写法只有贴图、颜色、向量、数值等：




渲染设置面板可调整


然而有时候，我们希望有更多的控制shader运行的手段，如bool值或者枚举类型，或者一些渲染设置的更改。以下举例先说明渲染设置(RenderSetup)的面板可设置，这能达到针对于同样的Shader代码逻辑仅仅是RenderSetup不同情况下，代码复...]]></description><category></category></item><item><title><![CDATA[uGUI之AutoLayout]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/90720541</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/90720541</guid><author>JohnBlu</author><pubDate>Sat, 01 Jun 2019 11:38:38 +0800</pubDate><description><![CDATA[创建一个ui对象Root，添加HorizontalLayoutGroup组件，在此对象下创建三个子对象，并分别添加LayoutElement组件，按照上图分别赋值MinWidth、PreferredWidth、FlexibleWidth，这里拿宽度(width)距离，height同理。

并勾选Root对象上的HorizontalLayoutGroup的ChildControlsSize的Wi...]]></description><category></category></item><item><title><![CDATA[C# 泛型可变性]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/86631372</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/86631372</guid><author>JohnBlu</author><pubDate>Fri, 25 Jan 2019 16:08:38 +0800</pubDate><description><![CDATA[泛型的可变性只能修饰接口或者委托的类型参数；

可变性分为协变性与逆变性，出于好记忆的角度，out协变可以理解为和谐的变化，in逆变可以理解为不和谐的变化。其格式为：


interface MyList&amp;lt;out T&amp;gt;{}
//或者
private delegate A MyDelegate&amp;lt;out A, in B&amp;gt;(B tmp);

委托的泛型可变性，在类型参数为返回值或...]]></description><category></category></item><item><title><![CDATA[互联网协议入门]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/86526062</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/86526062</guid><author>JohnBlu</author><pubDate>Thu, 17 Jan 2019 15:58:05 +0800</pubDate><description><![CDATA[这篇文章是我所见过的，互联网协议入门讲得最清晰的一篇文章。

以下是一些对这篇文章个人的归纳总结，文章较杂乱仅供自己回忆：

1.物理层

2.链接层

以太网规定，一组电信号构成一个数据包，叫做”帧”（Frame）。每一帧分成两个部分：标头（Head）和数据（Data）。“标头”包含数据包的一些说明项，比如发送者、接受者、数据类型等等；”数据”则是数据包的具体内容。“标头”的长度，固定为18字节...]]></description><category></category></item><item><title><![CDATA[形象理解Api和SDK]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/86511760</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/86511760</guid><author>JohnBlu</author><pubDate>Wed, 16 Jan 2019 17:45:46 +0800</pubDate><description><![CDATA[刚开始学Java的时候不理解API和SDK的区别，感觉两个东西是一样的。在看了网上一些资料以后，对这两者的概念有了一定的理解，在这里记录一下（只针对Java）：

 


API


概念：API（Application Programming Interface,应用程序编程接口）是一些预先定义的函数，目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力，而又无需访问源码，或理解内...]]></description><category></category></item><item><title><![CDATA[代码规范注意事项]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/86471023</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/86471023</guid><author>JohnBlu</author><pubDate>Mon, 14 Jan 2019 11:25:54 +0800</pubDate><description><![CDATA[
类型成员的排列顺序


自上而下依次为：
类中需要声明的类或者结构体
事件：公有事件、受保护事件、私有事件
属性：公有属性、受保护属性、私有属性
字段：公有字段、受保护字段、私有字段
MonoBehavior函数
构造函数：参数数量最多的构造函数，参数数量中等的构造函数，参数数量最少的构造函数方法：重载方法的排列顺序与构造函数相同，从参数数量最多往下至参数最少构造函数与方法的访问级别顺序也应是，...]]></description><category></category></item><item><title><![CDATA[委托delegate的一些细节问题]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/83992716</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/83992716</guid><author>JohnBlu</author><pubDate>Mon, 12 Nov 2018 16:56:35 +0800</pubDate><description><![CDATA[委托delegate是一种依赖倒置的调用机制


假设我们有两个对象a和b，如果对象a需要调用对象b的一个函数func，那么对象a就需要取得对象b的引用，才能调用到对象b的函数func。也可以说成是，对象a提供了逻辑运行的时机，对象b提供了逻辑运行的内容。这里的依赖关系是a依赖b。

同样的需求：对象a提供逻辑运行的时机，对象b提供逻辑运行的内容。通过委托的形式，我们就可以更改这种依赖关系。即对...]]></description><category></category></item><item><title><![CDATA[Unity Stencil 模板测试概要]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/83539427</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/83539427</guid><author>JohnBlu</author><pubDate>Tue, 30 Oct 2018 13:52:37 +0800</pubDate><description><![CDATA[模板测试与透明度测试以及深度测试类似，模板测试也是用来决定一个像素点是否渲染的过程。其中要用到的模板缓冲区与颜色缓冲区以及深度缓冲区类似，模板缓冲区可以为屏幕上的为每个像素点保存一个无符号整数值(通常的话是个8位整数)。模板测试发生在透明度测试（alpha test）之后，深度测试（depth test）之前。其中所有的测试都通过，才会更新颜色缓冲区中的颜色。

一般来说，stencil完整语法格...]]></description><category></category></item><item><title><![CDATA[代码评价标准参考]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/83348413</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/83348413</guid><author>JohnBlu</author><pubDate>Thu, 25 Oct 2018 17:36:14 +0800</pubDate><description><![CDATA[这篇博客并没有很好地归纳完我认同的 代码评价标准，为拿优快云1024勋章草草发布，后续会完善，还望见谅 :)

好代码和坏代码的差别

当一个功能被完成的时候，一个不怎么懂编程技术的老板将会从哪几个维度来评价  这个程序员完成的这个工作呢？完成这个功能花费的时间一定是其中一个要素，除此之外就是这个功能是否贴合了需求，贴合了需求之后就是测试在真实运行环境下是否运作正常不报错。我想这就是一般老板考察...]]></description><category></category></item><item><title><![CDATA[C#、.NET Framework、CLR的关系]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/83184139</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/83184139</guid><author>JohnBlu</author><pubDate>Fri, 19 Oct 2018 16:28:58 +0800</pubDate><description><![CDATA[原文链接

很多人没有将C#、.NET Framework（.NET框架）、CLR（Common Language Runtime，公共语言运行库）这三者之间的关系区分清楚，认为其版本号是一一对应的。其实不然，.NET框架是一个独立发布的软件包，其包含了CLR、类库以及相关的语言编辑器等工具。C#代码经过编译之后在CLR环境中运行。由于.NET框架3.0/3.5其实是.NET2.0的扩展（只是增加...]]></description><category></category></item><item><title><![CDATA[c#多线程]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/83011653</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/83011653</guid><author>JohnBlu</author><pubDate>Thu, 11 Oct 2018 15:05:44 +0800</pubDate><description><![CDATA[首先说明unity多线程操作的适用范围：

网络请求 
	复杂密集的I/O操作
	耗时的复杂算法计算（如网格动画）
unity多线程操作的限制：

UnityEngine中的API对象不能在子线程中使用（如Unity的组件、对象和系统调用）
	UnityEngine总定义的基本数据结构可以使用（如vector/quaternion/float/int/struct可以使用）。
总的来说：对于不是画...]]></description><category></category></item><item><title><![CDATA[Tags]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/83009035</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/83009035</guid><author>JohnBlu</author><pubDate>Thu, 11 Oct 2018 11:08:05 +0800</pubDate><description><![CDATA[
RenderType默认种类


Opaque: 用于大多数着色器（法线着色器、自发光着色器、反射着色器以及地形的着色器）。
		Transparent:用于半透明着色器（透明着色器、粒子着色器、字体着色器、地形额外通道的着色器）。
		TransparentCutout: 蒙皮透明着色器（Transparent Cutout，两个通道的植被着色器）。
		Background: Skybox ...]]></description><category></category></item><item><title><![CDATA[RenderSetup]]></title><link>https://blog.youkuaiyun.com/JohnBlu/article/details/82857342</link><guid>https://blog.youkuaiyun.com/JohnBlu/article/details/82857342</guid><author>JohnBlu</author><pubDate>Thu, 27 Sep 2018 11:57:29 +0800</pubDate><description><![CDATA[
cull


back/front/off


zwrite


on/off


ztest


less/greater/equal/gequal/notequal/always


blend


blendop    混合方式    可选参数：

add(默认混合操作)/sub/resub/min/max

(min/max的混合因子只会是one，也就是说，无论blend后面写的是因子是...]]></description><category></category></item></channel></rss>