自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fjjaylz的博客

我看过凯尔莫罕的雪,也吹过史凯利杰的风。 我燃过诺维格瑞的火,也行过陶森特国的城。 我曾在威伦大陆无人的旷野披星戴月,也曾在奥森弗特喧嚣的酒馆与故友重逢。

  • 博客(50)
  • 收藏
  • 关注

原创 深入理解C#的协变和逆变及其限制原因

本篇文章的主题:变体(Variance),上面的object[] objArray = strArray形式被称为协变,此外还有另一种变体形式被称为逆变(一些书籍或文章翻译为抗变)。变体的主要形式包括协变(Covariance)和逆变(Contravariance),后面我会使用What-Why-How的方式逐个说明这两个概念。

2023-02-27 14:56:22 1714 1

原创 ios平台alternate icon配置注意事项

ios支持动态更换用户的appicon,要实现这个功能,一共需要进行三步操作。详细的接入方式在很多文章中都已经有分享了,所以本文中也不会将具体步骤展开细讲,重点会放在接入过程中所遇到的坑点。...

2022-06-20 23:19:03 1698

原创 基于LuaInterface理解跨语言交互的原理

文章目录一、跨语言调用的定义及四个疑问二、理解C#与Lua间的跨语言调用1. lua的简单介绍2. LuaInterface是什么3. LuaInterface的结构4.KopiLua的实现方式5. 回答文章开头的四个疑问1. 两个语言之间的联系是如何建立起来的?2. 一个数据是怎样从一个语言转换到另一个语言的?3. 一个语言是如何实现对另一个语言的函数的调用的?4. 两个语言之间如何查找到对应的值或函数?6. 总结:LuaInterface所做的工作三、虚拟机1. 虚拟机的定义2. 常见的虚拟机及对应的

2021-06-06 19:12:49 1223

原创 《代码大全2》读后感

一、书籍基本框架从三月起,这本书已经啃了差不多两个月了,囫囫囵囵总算是通读了一遍,除去最后的引用和查找表,八百七十几页的大部头,这个长度甚至超过了很多长篇小说。书的内容非常细致,但却并不混乱,反而非常清晰,光是目录本身就已经将内容划分得相当清晰了。二、一点读后感与以前读过的《重构》一样,这本书里有很多经验在实际开发中都慢慢摸索了出来或是从其他书籍论坛中学习到过,但是更多的是完全没有意识到和模模糊糊没有形成明确概念的内容:比如第30章编程工具里有“工具导向的环境”这样的内容,虽然在开发过程中会

2021-05-17 00:09:13 762

原创 游戏开发小技巧记录(一)——目录连接

文章目录序定义应用使用方法举例其他平台扩展参考链接阅读本文你可能需要的前置知识:windows命令行使用shell脚本使用版本控制管理序在这几年的开发过程里遇到了一些问题,在解决问题的过程中学习到了一些非常有用的小技巧,于是准备逐个记录一下。这些小技巧在成熟的公司或项目里可能会很常见,但对于个人开发者或者初创团队而言往往是一些盲区,有的可能是完全没有接触过,有的可能是没想过可以这么使用。记录下来,希望可以对其他人有所帮助。这一篇文章要讲的是目录连接定义目录链接这个词是微软在msdn

2021-01-23 14:12:48 329 1

原创 C#迭代器的实现和应用(三)——Unity的协程分析以及实现自己的协程

文章目录unity协程简单回顾实现自己的协程unity协程简单回顾实现自己的协程

2020-12-22 23:57:52 1162 2

原创 C#迭代器的实现和应用(二)——延迟执行、流式处理与两个基本LINQ扩展的实现

文章目录一、拾遗——从管道折返的思考两种实现的行为区别测试两种实现的行为区别——延迟执行延迟执行的本质3. 延迟执行的本质3. 延迟执行时迭代器的调用时序简化我们的where和select一、拾遗——从管道折返的思考我之前有在《对“管道”的进一步理解》一文中提实现过一个自制的简单管道,用于逐步抽象,以说明管道思想的使用,但是实际上我那次的实现的Where、Select函数与LINQ中提供的函数仍然有所区别:我的实现本质上是对每一次操作都进行迭代并创建新的集合,而在LINQ中提供的Where和Selec

2020-12-19 22:29:44 894

原创 C#迭代器的实现和应用(一)——基础篇

文章目录一、拾遗——从管道折返的思考两种实现的行为区别测试两种实现的行为区别——延迟执行二、迭代器的完整实现1. foreach的实现2. 迭代器的实现方式3. 延迟执行的本质三、实现与linq一致行为的where和select1. 实现where2. 实现select3. 延迟执行时迭代器的调用时序四、yield简化迭代器——C#的努力迭代器的实现简化简化我们的where和select从yield看到的新功能——unity协程阅读本文需要一定的前置知识:C#泛型委托的使用LINQ的使用方式

2020-12-16 23:49:19 4502 3

原创 UnityShader中从顶点着色器到片元着色器的插值变换

文章目录起因疑问答案测试上周学习shader遇到了一个小问题,希望可以帮助有同样困惑的同学,也对自己的学习进行一个记录。起因最近几个月一直在断断续续学习Unity的shader相关知识,希望通过冯乐乐女神的《unityshader入门精要》入个门,不过工作时间比较紧张,只能在周末有一点进度。上周末学到第十三章的全局雾效的时候,遇到了一个怎么也想不通的问题:生成全局雾效时需要对每个像素的位置进行世界坐标重建,为了重建世界坐标,又需要获得每个像素相对于摄像机的一条射线,完整公式如下:worldPo

2020-12-06 22:58:18 2607 7

原创 一本值得反复学习的好书——《重构》读后感

文章目录读书总结书籍结构一部形成了完整方法论的书籍一部值得反复学习和实践的书籍一部阅读体验非常与众不同的书籍代码的坏味道极其常见的几种坏味道带给我一些新思考的几种坏味道结语读书总结总计花了大概两周,每天上下班各有半小时左右的时间,读完了《重构——改善既有代码的设计(第二版)》,获益良多,虽然从开始学习编程起就一直很注意代码的可读性和代码结构的维护,但是毕竟经验尚浅,无论是广度还是深度都远远不够。读书过程中不仅有很多平时只是浑浑沌沌感受到的把代码写好的原则被作者轻而易举地点透了,同样还有很多以前自以为是

2020-11-29 23:41:32 3114 3

原创 对“管道”的进一步理解

文章目录起因为什么叫"管道"从循环说起一. 典型问题二. 循环迭代处理三. 管道处理1. 手写管道2. 提取操作3. 使用泛型4. 使用LINQ5. 其他语言四、语言之外的扩展起因近来在看《重构(第二版)》,里面有提到一个重构模式是“以管道取代循环(Replace Loop with Pipeline)”,这让我想起来去年年初的时候学习C++在powershell上的遇到的“管道”,当时还专门写了一篇博客记录了一下:Windows PowerShell的“管道”以及对可执行文件的文件重定向,加上最近又在

2020-11-22 22:48:36 1374 5

原创 《软技能——代码之外的生存指南》 读后感

文章目录思维导图内容感悟一. 人生二. 能力三. 身心结束《软技能——代码之外的生存指南》(Soft Skill : The Software Developer’s Life Manual)一书声名在外,最近花了半周左右看完了。众所周之,这不是一本讲专业细节的书,而是一部关于码农职业生涯指导性的作品,看完以后把我另一些以前仅仅隐约有所感触但又未能总结具体概念的思考具象化了,但更重要的是确实改变了我一些想法——尤其是关于职业规划和理财方面的。于是决定写点东西,当作读后感。思维导图看完全书,根据书里的

2020-11-15 17:46:25 479

原创 Unity中安卓平台的Theme设置

文章目录安卓Theme的简单说明Unity使用安卓Theme的设置Unity的Theme配置方式特别需要注意的点最近项目申请整理谷歌商店的推荐位,谷歌审核人员提出Theme过时,要求对于App使用Theme.AppCompat或Theme.Material及其派生的主题,而对于这方面的说明,网上基本都是安卓原生的设置方式,用在unity上并不管用,折腾了我一天,终于理清楚了unity在安卓平台的theme设置方式,这里简单做一个记录。安卓Theme的简单说明我们都知道,安卓到现在已经出到了安卓10,在

2020-06-19 01:08:20 3280

原创 Unity面试和总结分析(五)

文章目录题目0,热个身题目1,关于C#中String的编码格式题目1的正确答案题目2,关于C#中new String的问题题目2的正确答案今天参加了一场面试,其中有几个关于c#中string的题目我觉得很有意思,这里拿出来分享一下。题目0,热个身题目内容:在C#中,对一个string str赋值,str = null和str = ""有什么区别?这个问题很简单,我们都知道在C#中,str...

2020-03-26 01:03:01 497

原创 Lua的for泛型迭代器使用方式

文章目录1.泛型迭代器组成2.泛型迭代器的形式3.泛型迭代函数的形式4.实例5.直接返回泛型迭代器的所有所需内容1.泛型迭代器组成参考这里for var_1, ···, var_n in explist do block end等价于do local f, s, var = explist while true do local var_1, ···, var_n = ...

2020-03-24 20:04:01 943 1

原创 Lua中多变量赋值使用多返回函数时,函数返回值的展开规则

文章目录仅有函数的情况与变量混合的情况结论一个附带的测试我们知道Lua支持多个变量在一个语句中赋值,也支持一个函数同时返回多个值,但是这两者组合起来会怎么样呢?多说无宜,测试开始。仅有函数的情况首先是我们的多返回函数add,有两个参数,固定返回1和0,然后是四个变量,bcde。function add() return 1,0endlocal b,c,d,e = add()...

2020-03-23 18:26:05 1475

原创 在Unity的UGUI系统里使用Renderer的显示层级研究 (零) 总结

文章目录1. 测试关系的思维导图2. 测试关系总结这是针对SpriteRenderer、3d物体和canvas的三篇测试进行一下总结,如果需要查看测试过程,可以分别点击下面的链接:在Unity的UGUI系统里使用Renderer的显示层级研究 (一)在Unity的UGUI系统里使用Renderer的显示层级研究 (二)在Unity的UGUI系统里使用Renderer的显示层级研究 (三)...

2020-03-16 20:06:14 1943

原创 在Unity的UGUI系统里使用Renderer的显示层级研究 (三) Canvas与Renderer混合显示的测试

文章目录1. WorldSpace与三维物体的混合显示2. ScreenSpace-Overlay与三维物体的混合显示2.ScreenSpace-Camera与三维物体的混合显示在第二节测试了Canvas的sortingOrder的功能,使用上基本与三维物体无异,但是在与三维物体混合显示的时候这个sortingOrder相互之间是否存在关系?这一节就来测试一下。在第一节我做出了一个推论:三维...

2020-03-16 17:32:06 5222

原创 在Unity的UGUI系统里使用Renderer的显示层级研究 (二) Canvas组件之间的显示规则

文章目录1. Canvas的三种模式2. ScreenSpace-Overlay模式下的显示之前做了一下三维物体的显示层级测试,这一章做一下Canvas之间的相互显示1. Canvas的三种模式canvas的显示有三种显示模式,也就是WorldSpace、ScreenSpace-Overlay、ScreenSpace-Camera:ScreenSpace-Overlay这种模式是Can...

2020-03-16 16:35:57 2153

原创 在Unity的UGUI系统里使用Renderer的显示层级研究 (一) 三维空间的Renderer显示

文章目录1. Unity的渲染组件之间类的关系2. 几个功能猜想的验证1. 两个spriteRenderer在sortingOrder不相同时会如何显示2. 一个spriteRenderer和一个粒子特效在sortingOrder的影响下会如何显示3. sortingOrder对3D物体的影响4. 三维Renderer在Canvas中的表现想起来测试这一个问题也是源于一次面试,问题很直接:...

2020-03-04 17:11:10 4125 1

原创 Unity面试和总结分析(四)

文章目录1. 如何制作一个具有三百个物品的背包系统2. transform.find和gameobject.find有什么区别3. 冒泡排序的原理4. 队列和栈之间的区别,以及它们的应用距离上次找工作过去了一年多,因为一些情况从公司离职了,又一次开始了找工作的路,想想一年多的开发,还是学习到了不少东西的,不过也因为使用了一年多的cocos2dx和C++,中间又在业余时间玩了一段时间的cocosc...

2020-03-04 13:02:11 283

原创 Unity里GameObjet.Find和Transform.Find的几个测试

文章目录1. 从API上简单分析2. 开始测试3.测试和对比论4. 总结不同之处最近面试被问到了一个问题,GameObjet.Find和Transform.Find的区别有哪些,因为比较久远,所以记得不是很清晰,答完感觉不太对,又专门回来做一下测试。其他面试题集合:这应该是一个比较常见的Unity相关问题,我们从API开始进行分析,然后进行试验。1. 从API上简单分析//GameObj...

2020-03-03 23:05:38 529

原创 原 C++ Primer学习笔记 - 18 - 字符串、向量和数组 (七)多维数组

文章目录3.6 多维数组C++中多维数组的几个特征习题3.43 使用三种方式输出多维数组ia的值,第一种使用范围for循环,第二种使用普通的for循环并且使用下标取值,第三种也使用普通的for循环但要使用指针。要求不使用自动类型推断比如auto、decltype等。3.44 改写上面的程序,使用类型别名替换循环变量控制的类型。3.45 再次改写程序,要求使用auto关键字一点想法记录3.6 多维...

2019-11-01 10:19:48 139

原创 原 C++ Primer学习笔记 - 17 - 字符串、向量和数组 (六) C风格字符串

文章目录碎碎念3.5.4 C风格字符串3.5.4练习练习3.37练习3.38练习3.39练习3.403.5.5 与旧代码的接口3.5.5练习练习3.41:练习3.42碎碎念很明显能看出来C++在努力地做去指针化和去C化又想做好兼容,但是,拿这个string类型来说,真的是个半残啊,连跟以前对应的sprintf对应的格式化方式都没有。关于下标越界,有一个专用名词叫缓冲区溢出(buffer o...

2019-05-13 18:27:13 175

原创 C++ Primer学习笔记 - 16 - 字符串、向量和数组 (五) 数组

文章目录3.5.1 数组3.5.1练习练习3.27练习3.28练习3.293.5.2 访问数组元素3.5.2 练习练习3.30练习3.31练习3.32练习3.333.5.3 指针和数组3.5.1 数组数组是一种复合类型,必须在定义时就指定大小。基本格式: 类型 变量名 [常量表达式],如果同时进行初始化,可以省略常量表达式,由编译器确定大小。注意复杂数组的声明:声明说明...

2019-05-07 18:36:10 371 1

原创 C++ Primer学习笔记 - 15 - 字符串、向量和数组 (四) 迭代器介绍

文章目录迭代器介绍3.4.1 使用迭代器3.4.1 练习练习3.21练习 3.22练习3.233.4.2 迭代器运算3.4.2 练习练习3.24练习3.26迭代器介绍迭代器是一种更通用的访问内容的机制 ,能提供 对对旬的间接访问。3.4.1 使用迭代器有迭代器的类型同时拥有返回迭代器成员,所有迭代器类型都有名为begin和end的成员,顾名思义,begin指向第一个成员,end指向结束的...

2019-04-30 18:27:27 211

原创 关于cocos2dx中scheduleUpdate和schedule方法的一点测试

文章目录缘起主要思考的问题开源项目的优势——查看源码1.底层主循环结构——Scheduler的update2.update的实现缘起由于我是从unity转做的cocos2dx,在unity中仅提供了三个update方法:fixupdate、update和laterupdate,分别有不同的调用时序,但在cocos2dx中除了普通的update以外,还提供了schedule这样一个骚操作,一直对...

2019-04-30 12:28:30 1399

原创 关于C++中class关键字的一种特别使用情况

今天在写代码时遇到了这样一个错误:error: must use ‘class’ tag to refer to type ‘XXX’ in this scope上面的这个XXX是一个类的类名。搜来搜去也没找到原因,经过一段时间的折腾我发现了问题所在:其本质是同一个关键字被两次声明造成的。复现案例如下:在类A之前声明了一个函数A,最后在类B中声明一个类A的对象并调用A的构造函数。/...

2019-03-22 16:42:42 4906 1

原创 C++ Primer学习笔记 - 15 - 字符串、向量和数组 (三)

文章目录3.3.1 定义和初始化vector对象主要概念练习3.3.2 向vector对象中添加元素主要概念练习3.3.3 其他vector操作主要概念练习3.3.1 定义和初始化vector对象主要概念vector是一个类模版,通过提供一些额外信息来指定模板 到底实例化面干什么样的类,需要提供的信息由模板决定。vector需要提供的信息是一个对象的类型定义和初始化一个vector对象...

2019-03-15 17:57:17 196 3

原创 C++ Primer学习笔记 - 14 - 字符串、向量和数组 (二)

文章目录3.2 处理string对象中的字符主要概念练习3.2 处理string对象中的字符主要概念一些常用 的string处理函数:函数名作用isalnum(c)当c是字母或数字时为真isalpha(c)当c是字母时为真islower(c)当c是小写字母时为真isupper(c)当c是大写字母时为真iscntrl(c)当c是控制字...

2019-03-15 11:43:36 217 11

原创 C++ Primer学习笔记 - 13 - 字符串、向量和数组 (一)

文章目录3.1 命名空间的using声明主要概念练习3.2 标准库类型string3.2.1定义和初始化操作3.2.2string对象上的操作3.2.2节练习3.1 命名空间的using声明主要概念每个using声明引入命名空间中的一个成员。(实际操作中发现只要引入命名空间就可以使用所有的可用成员)头文件不应该包含using声明。练习练习3.1 使用恰当的using声明重做和1.4...

2019-03-14 18:56:36 174

原创 C++ Primer学习笔记 - 12 - 自定义数据结构

文章目录定义sata类型主要概念练习定义sata类型主要概念以struct开始,跟着类名和类体,其中类体可以为空,以花括号包围,以分号结尾。类体中可以定义变量,可以为数据成员提供一个类内初始值。练习练习2.39:编译下面的程序观察其运行结果,注意,如果忘记写类定义 体后面的分号会发生什么情况?记录下相关信息,以扣可能 会有用。struct Foo{}int main(){...

2019-03-07 19:13:39 132

原创 C++ Primer学习笔记 - 11 - 处理类型

文章目录2.5.1 类型别名主要概念2.5.2 auto类型说明符主要概念练习2.5.3 decltype类型指示符主要概念练习2.5.1 类型别名主要概念typedef可以用于定义类型别名:typedef double wages;using也可以用于定义别名:using SI = Sales_item;类型别名和类型名字行等价。使用复合类型或常量时要特别注意意外情况。2.5....

2019-03-07 16:12:43 139

原创 C++ Primer学习笔记 - 10 - 基本内置类型 (五)

文章目录2.4节 ```const```限定符主要概念练习2.4.1 ```const```引用 2.4.2 指针和```const```主要概念练习2.4.3 顶层const主要概念练习2.4.4 constexpr表达式主要概念练习2.4节 const限定符主要概念const限定符可以在编译层面防止对一个变量的值进行修改。默认状态下const变量仅在文件内有效,并且定义时就必须进...

2019-03-06 18:38:50 176 10

原创 C++ Primer学习笔记 - 9 - 基本内置类型 (四)

文章目录2.3.1 引用主要概念练习2.3.2 指针主要概念练习2.3 理解复合类型的声明主要概念练习2.3.1 引用主要概念引用(reference) 为对象起了另外一个名字,引用类型引用(refers to)另外一种类型。通过在声明符前加 &的形式为定义引用类型,例如:int ival = 1024;int &refVal = ival;int &re...

2019-03-06 15:06:26 185

原创 C++ Primer学习笔记 - 8 - 基本内置类型 (三)

文章目录2.2.1节 变量定义简单要点练习2.2.2节 变量声明和定义的关系主要概念练习2.2.3 标识符主要概念练习2.2.4节 名字的作用域主要概念练习2.2.1节 变量定义简单要点初始化和赋值是具有不同意义的,初始化是创建变量是赋予其一个初始值,而赋值是把对象的当前值擦除而以一个新的值替代。列表初始化的四种形式: int a = 0; int a = {0}; int a{...

2019-03-06 12:37:20 221

原创 C++ Primer学习笔记 - 7 - 基本内置类型 (二)

文章目录2.1.2 类型转换2.1.2 习题2.1.3 字面值常量2.1.3练习总结2.1.2 类型转换几条简单的理解:系统会自动进行一些基本类型的转换,使用时要注意。非0值都为true,0为true。浮点数转换为整数时会自动去掉小数部分。无符号类型超出范围会溢出,结果是对其最大值取模后的值。带符号类型超出范围会表现为未定义(undefined)。要注意带符号类型和无符号类型的混...

2019-03-05 23:30:53 241

原创 C++ Primer学习笔记 - 6 - 基本内置类型

文章目录主要内容习题习题2.1习题2.2主要内容1.C++提供了多种内置类型(和其他语言的类型没有太大区别)2.C++的无符号类型是在类型前加unsigned标志3.float型和double型数据在计算时的消耗相差无几,但float精度经常不够,尽可能使用double4.char类型和其他的基本类型稍有区别,被分为了三种:char、signed char、unsigned char,在...

2019-01-27 23:18:42 171

原创 C++ Primer学习笔记 - 5 - 类简介

文章目录关键内容习题习题1.20习题1.21习题1.22习题1.23习题1.24习题1.25结束关键内容类的简单作用类定义了行为一个类的作者定义了这个类的对象可以执行的所有动作。习题习题1.20用Sales_item类编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上找这个Sales_item还费了点劲,书上提供的地址找不到文件,有需要的可以下载我的文件:...

2019-01-27 01:46:18 199

原创 Windows PowerShell的“管道”以及对可执行文件的文件重定向

文章目录起因PowerShell管道从文件传入输出到文件把指令连接起来总结起因在C++ Primer中文第五版的第19页中,书上提到了一个文件重定向的功能:由于我最近一直使用powershell进行编译和运行,在使用时发现这么写并不能正常运行,会提示如下信息:“<”运算符是为将来使用而保留的。+ CategoryInfo : ParserError: ( : ...

2019-01-27 00:45:04 7609 4

空空如也

空空如也

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

TA关注的人

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