EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

Sort By :
Default
UpdateTime
Reads
RSS  RSS

原創 Win10专业版激活工具

本软件只适合Win10专业版激活,其它版本并不清楚适用不适用。 1.运行之前最好不要开杀毒软件 2.双击exe文件运行,点击红色按钮,等待一段时间 3.破解完毕 最佳应用,当你安装WIN10的虚拟机的时候 ...

2020-03-31 17:30:59

1k+ 1615 reads

0 comments

原創 Unity的C#中Vector3.Normalize()和Vector3.normalized的区别

.normalized其实是归一化, 当玩家同时按下W和D的时候,玩家是斜着走的, 如果向前和向右的移动速度都1m/s,那么斜着走就是1.414m/s, 结论:斜着走比正常走路快。 这显然是不符合常理的。 为了解决这个问题,出现了.normalized ...

2020-03-31 16:54:08

3k+ 3527 reads

0 comments

轉載 An email from a game developer

It was 5 years ago, but I remember it like it was yesterday. I just learned how to code in Java, and I had a burning desire to create my first game. The problem was I never programmed a video game before, and I had no idea where I should start or what I would even need. This sounded scary in my head, given the fact that it took me some time to figure out how programming works ...

2020-03-31 11:20:39

1k+ 1735 reads

0 comments

原創 Shader入门基础(二)

在Unity主界面的Project选项卡中,右键Create一个Unlit Shader。虽然Unity这里列出了4种Shader,其实它们的本质是一样的, 只不过是Unity根据我们不同的需求创建的预设模板而已。 Unlit Shader是默认不参与光照计算的, 但又包含了Shader程序所具备的基本结构, 因此从这里入手会相对容易一些 ...

2020-03-31 07:26:51

2k+ 2586 reads

0 comments

原創 CSS里面的1em是什么?

css里面的1em是什么? 1em=16px (如果你不设置body内的font-size的话) 1em=10px(如果你在body内的声明font-size=62.5%的话) 是的,1em是一个字高,它是相对单位,em会继承父级元素的字体大小 ...

2020-03-31 06:23:01

1k+ 1609 reads

0 comments

演繹 马斯洛需求层次

第一层次 生理需求,即基本的吃喝拉撒。 第二层次 安全需求,基本的安全保证。 包括但不限于人身安全、财产安全。 第三层次 社交需求,基本的情感寄托。 包括但不限于亲情、友情、爱情。 第四层次 尊重需求,基本的尊重。 包括但不限于自尊、面子。 第五层次 自我需求,自我价值的实现。 包括但不限于世俗定义的成功、自我认为的成功、帮助他人的满足 ...

2020-03-31 05:49:12

3k+ 3764 reads

2 comments

演繹 [Unity3D]向量Vector3

[Unity3D]向量Vector3 在Unity中,用结构体来描述向量,什么是结构体请看→这里 namespace UnityEngine {public struct Vector3 {public float x; public float y; public float z;}} 向量的长度:向量的大小(或长度)称为向量的模 ...

2020-03-30 20:41:49

2k+ 2086 reads

0 comments

原創 [Unity]从零开始认识C#脚本

食用方案:建议有一定C#基础的话可以直接看。不过没有的话,问题也不是太大,因为主要还是接触Unity中的常用API,记住就可以了。 参考方案:以官方的Standard Assets的ThirdPersonCharacter为例。 最基础的C#请看这里→C#入门基础(一) ...

2020-03-30 17:20:10

3k+ 3035 reads

7 comments

原創 2020市面上各大游戏引擎一览

Unity 目前市场份额最大的引擎,适合新手 UnReal4 目前市场上画质比Unity好的引擎,不适合新手 CryEngine 光追++,但致命架构问题,BUG非常多 Lumberyard CryEngine改,无优势,无特点,BUG也没修复完 Xenko 完全开源的引擎,但处于非常原始的状态 Godot 适合做2D的引擎 ...

2020-03-29 02:25:45

2k+ 2425 reads

0 comments

原創 [Blender]ASCII FBX files are not supported如何解决?

很不幸,你不能直接导入ASCII的FBX,但是你可以导入Binary的FBX,所以你需要一个第三方工具——Autodesk FBX Converter(免费) ...

2020-03-28 21:47:31

4k+ 4229 reads

0 comments

演繹 C#高级编程——Reflection反射

反射就像在主程式里面,安装了一个声纳探测器, 在生命周期一开始的时候,就会调用探测器,你的方法执行依赖于声纳反射回来的声波, 这样的做的好处是,当你想更新程序的时候,只需要加dll就行了, 不需要重新编译。 这样,就成了插件式的编程 ...

2020-03-25 17:27:19

2k+ 2014 reads

0 comments

原創 C#高级编程——Attribute特性

在Unity中,当你写 [RequireComponent(typeof(Rigidbody))] 的时候,脚本会为你请求Rigidbody, 一旦这个脚本挂上去, Inspector里面会为你自动增加一个Rigidbody;AttributeUsage()用来定义特性的使用范畴; AttributeTargets.Field 表示能写在字段前面; AttributeTargets.Method 表示能写在方法签名; Inherited=true表示允许继承; AllowMultiple=true表示允许多个特性 ...

2020-03-25 17:14:05

2k+ 2194 reads

0 comments

原創 [Unity]以m_开头的变量为什么在Insepector面板中不显示?

同样的,即使你写public float m_camelCase = 0; 在Inspector中也会变成 Came Case : [Image] 在Unity中,每当你写 [SerializeField] float m_MovingTurnSpeed = 360; 的时候,在Inpector中你将看到 去掉m_+首字母大写的自动补充空格的 如 Moving Turn Speed 这样的显示出来的变量。 是的, Unity为了更友好地显示,只要你使用了m_你就会在实际面板中看不到m ...

2020-03-25 13:16:56

2k+ 2726 reads

0 comments

原創 [Unity]为什么我需要使用[SerializeField] ?它是用来干什么的?

[SerializeField] 你想在面板序列化显示,但不想其它脚本访问它,通常和private连用 [HideInInspector] 你不想在面板中显示,但你想让其它脚本访问它,通常和public连用 注意点: ① [SerializeField]不可用于static变量。 ② [SerializeField]private float m_xx 在Inspector中只会显示xx。 ③ m_开头表示类的成员变量m为member的缩写,这是个习惯问题 ...

2020-03-25 13:14:29

3k+ 3211 reads

1 comments

演繹 [解决方案]C#Winform处理由frm.Refresh()方法造成的屏幕闪烁

对于大多数应用程序,.NET Framework 提供的默认双缓冲将提供最佳效果。默认情况下,标准 Windows 窗体控件是双缓冲的。可以通过两种方法对窗体和所创作的控件启用默认双缓冲 ...

2020-03-20 02:26:41

1k+ 1830 reads

0 comments

原創 C#try和异常

try catch的基本用法就不说了 主要说catch这块, catch里面填的参数,一般是通用异常 比如 DivideByZeroException ex , 但正常会帮你写上Exception ex, Exception 是父类,包含了所有可能的异常, 只要一发生异常,就会执行catch语句。 那肯定有人想问,像IndexOutOfRangeException、 FormatException、OverflowException这些具体的异常 ...

2020-03-19 01:46:32

1k+ 1856 reads

0 comments

原創 C#Lambda表达式

Lambda表达式 ▢ Lambda表达式其实就是一个用来代替委托实例的未命名的方法; 换句话说,它是个方法,它没有名字。 ▢ 编译器会把Lambda表达式转化为以下二者之一:    ▢ 一个委托实例    ▢ 一个表达式树(expression tree),类型是Expression<TDelegate>,它表示了可遍历的对象模型中Lambda表达式里面的代码。它允许Lambda表达式延迟到运行时再被解释 ...

2020-03-18 21:50:10

2k+ 2162 reads

1 comments

原創 C#协变、逆变、不变

C#协变、逆变、不变 Covariance 协变 【Code】 可以按F12打开原生C#查看这些接口和类的定义, 可以发现: IEnumerable只作为输出 IList同时作为输入和输出 Action只能输入 于是就有3种说法: Covariance,Contravariance,Invariance Covariance—协变 Contravariance—逆变 Invariance—不变 ...

2020-03-18 03:22:57

2k+ 2119 reads

0 comments

原創 C#泛型约束

C#泛型约束 一般来讲,泛型的类型参数(parameter)可以是任意类型的。 如果只允许使用特定的类型参数(argument),就可以指定约束, 规定: where T:base-class //必须是某个父类的子类 where T:interface //表示T必须是实现了某个接口 where T:class //表示T必须是引用类型 where T:struct //表示T必须是值类型(非空) where T:new() //表示必须有无参构造函数 where U:T //表示U继承于T ...

2020-03-18 01:05:40

1k+ 1834 reads

0 comments

原創 C#Event事件

Event事件 想要了解C#事件,先了解→C#委托 委托通常存在两个角色:广播者和订阅者 订阅者——指的是委托声明 广播者——指的调用委托的方法 可以参考 C#委托(上)的多播, 订阅者可以通过+=和-=来控制监听方法的数量。 这样的操作,被C#简化成了事件, 一方面是为了简化代码,另一方面是为了防止互相干扰。 需要注意的一点: ▢ 事件是一种结构,用于实现广播者/订阅者模型,它只暴露了所需的委托特性的部分子集 ...

2020-03-17 19:10:22

2k+ 2026 reads

4 comments

原創 C#枚举类型

什么是枚举? 枚举是一个特殊的值类型,它可以让你指定一组命名的数值常量。 public enum BorderSide{Left,Right,Top,Bottom} 枚举类型基本上是int且会自动赋值,从0,1,2,3 . . . 也可以是byte: public enum BorderSide:byte{Left,Right,Top,Bottom} 而且还可以指定: public enum BorderSide:byte{Left=1,Right=2,Top=10,Bottom=11} 这种写法等同于 ...

2020-03-17 02:30:52

2k+ 2116 reads

0 comments

原創 C#接口(补充)

Virtual的实现接口成员 ▢ 隐式实现的接口成员默认是sealed。 ▲ 什么是隐式实现的接口成员 [代码] ▢ 如果想要进行重写的话,必须在基类中把成员标记为virtual或者abstract。 [代码] ☆ 其实你不用virtual 、override也能运行,但是子类的这种行为相当于隐藏父类的 ...

2020-03-16 22:07:02

1k+ 1700 reads

0 comments

原創 C#接口

接口 ▢ 接口与class类似,但是它只为其成员提供了规格,而没有提供具体的实现 ▢ 接口里面的成员都是隐式抽象的 ▢ 一个class或struct可以实现多个接口 接口出现的原因 多人协作 接口实例: public interface  IEnumerator {    bool MoveNext();    object Current{get;}    void Reset(); } ▢ 接口的成员都是隐式public的,不可以声明访问修饰符 ▢ 实现接口对它的所有成员进行public的实现 ...

2020-03-16 21:04:32

1k+ 1663 reads

0 comments

原創 C#索引器

C#索引器 ▢ 索引器提供了一种可以访问封装了列表值或字典的class/struct的元素的一种自然的语法 string s="hello"; Console.WriteLine(s[0]); // 'h' Console.WriteLine(s[3]); // 'l' ▢ 语法很像使用数组时用的语法,但是这里的索引参数可以是任何类型的 ▢ 索引器和属性拥有同样的修饰符 ▢ 可以按照下列方式使用null条件操作符 string s=null; Console.WriteLine(s?[0]); ▢ 实现索引器需要定义this属性,并通过中括号指定参数 ...

2020-03-16 03:14:03

1k+ 1788 reads

0 comments

原創 C#sealed关键字、base关键字以及构造函数和继承

sealed关键字 sealed只能写在override前面,其它的成员不能用sealed 可以sealed类本身,就等于sealed类里面所有的virtual函数了 sealed出现的原因其实很简单, 因为不停的继承会产生很多错误, 所以有些类必须封闭, 于是产生了sealed关键字。 初始类并不需要封闭, 只有继承和重写的类才需要sealed。 base关键字 base和this略像,base主要用于: ✦ 从子类访问父类里被重写的函数 ✦ 调用父类的构造函数 ...

2020-03-16 00:43:36

1k+ 1767 reads

0 comments

原創 C#隐藏成员和new关键字

C#隐藏成员 当子类继承父类的时候,在子类中定义一个与父类完全相同的成员,会造成隐藏。 一般这种情况,是偶然的。 即,你写了A类,但过了段时间写了B类继承A类, 但是忘记了A类里面有一个public int Counter成员, 在B里面又定义了一遍, 这种情况,不会报错,但会提示你成员被隐藏 ...

2020-03-15 17:37:37

2k+ 2104 reads

0 comments

原創 C#抽象类

C#抽象类 ✦ 使用abstract声明的类是抽象类 ✦ 抽象类不可以被实例化,只有其具体的子类才可以实例化 ✦ 抽象类可以定义抽象成员 ✦ 抽象成员和virtual成员很像,但是不提供具体的实现。子类必须提供实现,除非子类也是抽象的。抽象类产生的原因 抽象类更像是 提前定义 规则,但是规则的实现 由子类完成。 它本质还是为协同工作提供的素材 ...

2020-03-15 17:16:56

1k+ 1572 reads

0 comments

原創 C#访问修饰符

5个访问修饰符 ✦ public,完全可访问。enum和interface的成员默认都是这个级别 ✦ internal,当前assembly或朋友assembly可访问,非嵌套类型的默认访问级别 ✦ private,本类可访问。class和struct的成员的默认访问级别 ✦ protected,本类或其子类可以访问。 ✦ protected internal,联合了protected和internal的访问级别 ...

2020-03-15 00:50:33

2k+ 2044 reads

0 comments

原創 C#struct关键字(补充)

struct和class差不多,但是有一些不同: ✦ struct是值类型,class是引用类型 ✦ struct不支持继承(除了隐式继承了object,具体点就是System.ValueType)class能有的成员,struct也可以有,但是以下几个不行: ✦ 无参构造函数 ✦ 字段初始化器 ✦ 终结器 ✦ virtual或protected成员 ...

2020-03-14 22:40:25

1k+ 1616 reads

0 comments

原創 C#Null

C#Null 普通的值类型不可为null。 比如int,默认会初始化为0。 C#有一种可空类型(nullable types) 来表示值类型的null。比如 Nullable<int> a=null; 麻烦的写法不符合C#的风格, 所以肯定有简化版本,于是有 int? a=null; Nullable<T>的常用属性和方法 ...

2020-03-14 20:07:21

1k+ 1594 reads

0 comments

原創 C#struct关键字

在 C# 中,结构体是值类型数据结构。 类是引用类型,结构是值类型。 结构不支持继承。 结构不能声明默认的构造函数。 另外, C# 中的结构与传统的 C 或 C++ 中的结构完全不同, C#结构可带有方法、字段、索引、属性、运算符方法和事件, 这些看起来就是个Class的基本功能了, 但是注意, Struct是专门对值类型的,它是存放在栈里面,而不是堆。(就像其它值类型一样) 它不会触发GC垃圾回收。 它比Class功能少 ...

2020-03-14 18:18:04

1k+ 1951 reads

0 comments

原創 C#Expression-Bodied方法

C#Expression-Bodied方法 int Foo(int x){return x*2;} int Foo(int x)=>x*2; void Foo(int x)=>Console.WriteLine(x) 使用这个方法的前提是方法里面只有1次计算(复杂的运算不行)。 这是一个简写方式,可用可不用,看个人习惯 ...

2020-03-14 17:50:24

1k+ 1556 reads

0 comments

原創 C#构造函数的Tips

构造函数 字段初始化在构造函数之前运行。 未初始化字段有一个默认值。 字段可选初始化。var wine=new Wine(); 要求Wine这个类的构造函数必须以public关键词实现, 否则var wine=new Wine();是错误的, 你可以在Wine里面定义一个静态方法, 然后用该静态方法去返回你private的构造方法,然后你就应该 ...

2020-03-14 17:21:07

1k+ 1610 reads

3 comments

原創 C#扩展方法

Deconstruct这个方法可以是扩展方法。本案例准备使用Deconstruct作为讲解对象,初步认识扩展方法以及扩展方法的使用。扩展方法 ① 定义一个静态类,类名随便。 ② 写一个static void Deconstruct方法,并且第一个参数必须是this关键词开头。 ③然后接类名+参数,接out参数。 ④使用的时候,直接可以在被扩展的类的实例中点出这个扩展方法 ...

2020-03-14 15:51:14

1k+ 1562 reads

0 comments

原創 C#params关键字

params关键字的参数必须是一维数组, params声明的一维数组在一个方法只允许出现一次 params声明的参数之后,不允许再出现任何参数,换句话说,其他参数你只能写在前面 params的功能可以用List等集合代替,只是使用Params显得更直观 ...

2020-03-14 14:48:48

1k+ 1493 reads

0 comments

原創 C#ref关键字

ref关键字 ref关键字其实是用来对static的方法里面的值,实现真正的关联。这样才会发生交换。 原理是,不加ref,因为int是值类型不是引用类型, 所以在使用a和b的时候,里面参数a和b仅仅是复制了外面a和b的值, 然后进行交换,这个交换仅在方法内,实际并没有对外面的a和b造成影响 ...

2020-03-14 05:17:59

1k+ 1544 reads

0 comments

原創 C#7.0之Deconstructor模式

DECONSTRUCTOR(C#7) C#7.0 引入了deconstructor模式 作用和构造函数相反,它会把字段反赋给一堆变量。 我认为翻译成析构函数是不准确的,不如翻译成分尸器(大雾)。 ta与 C++里面的析构函数(destructor)是完全不同的, ta的方法名必须是Deconstruct,参数必须带out。 Deconstruct可以被重载。 Deconstruct这个方法可以是扩展方法 ...

2020-03-13 23:34:24

1k+ 1506 reads

0 comments

原創 C#AS操作符、IS操作符和模式变量

AS操作符 as操作符会执行向下转换,如果转换失败,不会抛出异常,值会变为null。 什么是向下转换→C#引用转换 Asset a=new Asset(); Stock s=a as Stock; // s is null ; no exception thrown ...

2020-03-12 09:40:49

1k+ 1577 reads

0 comments

原創 C#虚函数

VIRTUAL函数成员 ✦ 标记为virtual的函数可以被子类重写,包括方法、属性、索引器、事件 可以这么理解, 你看, 我们有了继承这个方式, 但是我还想改父类的东西, 怎么办? 那就设置一个关键词叫virtual吧! 只需要把virtual加在类型的前面 ...

2020-03-12 07:19:11

1k+ 1684 reads

1 comments

原創 C#引用转换

引用转换 ✦ 一个对象的引用可以隐式的转换到其父类的引用(向上转换)。 ✦ 想转话到子类的引用则需要显式转换(向下转换)。 ✦ 引用转换:创建了一个新的引用,它也指向同一个对象。 向上转换 从子类的引用创建父类的引用 Man man = new Man(); Creature a=man;   //  This is called Upcast ...

2020-03-12 04:59:47

1k+ 1838 reads

0 comments