- 博客(40)
- 收藏
- 关注
原创 第一章 计算机系统漫游
一旦代码被加载到主存,处理器开始执行main程序的机器指令,这些指令将“hello,world\n”从主存复制到寄存器文件,再从寄存器复制到显示设备。一个CPU看上去并发执行多个进程,是通过处理器在进程间切换实现的,叫做上下文切换。机器代码程序表现得像运行在一个一次执行一条指令的处理器上,然而底层硬件远比抽象描述的复杂精细,它并行的执行多条指令。虚拟内存为每个进程提供假象,每个进程都独占主存,每个进程看到的内存都是一致的称为虚拟地址空间。链接阶段:将单独的预编译目标文件合并到程序,加载到内存,系统执行。
2024-02-03 00:51:41 916
原创 关于Unity客户端的核心能力的思考
举个例子:你花了一个星期学会了搬砖当然很棒,但是如果把搬砖这个过程重复10000次,你可以在各种环境搬砖,下雨天搬砖、泥泞的小路搬砖……虽然好像每次搬砖处于不同的环境,但是本质上你还是在搬砖。你就算再熟悉API和业务逻辑以及插件使用,这些对你自己写API以及插件,对你了解游戏引擎架构,这些本质的东西几乎没有一点帮助。当然,熟悉API是有用的,在我们写代码的过程中,能够随时想到用到这些API。这种学习我觉得不是核心能力,因为不同API之间的本质其实是相同的,按照不同API的格式进行调用,然后能实现某种功能。
2024-01-30 15:53:37 417
原创 如何学会规划自己的代码
第一步把业务逻辑理顺做一个庞大的系统前,里面通常潜藏着很多逻辑,提前理顺,会比在写代码的过程中去理顺要好的多。因为写代码时,尽可能的关注。
2024-01-30 12:18:49 869
原创 Xlua 热更新 实现显示帧率
第三步:在sublime Text或者vs中创建lua脚本 FPSDisplay.lua。进入链接,下载zip,进入Asset文件,将其中所有目录导入Unity的Asset中。第二步:创建脚本 XLuaFPSDisplay.cs。复制粘贴以下代码,然后将脚本挂载到任意对象。第一步:导入Xlua插件。
2024-01-29 18:25:46 442
原创 XLua Unity中两种加载lua脚本的方式
由于Resources.Load<TextAsset>()只能读取后缀名为.txt的文件,所以我们需要将Lua文件的后缀改为「.lua.txt」。在加载时,文件名传入「XXX.lua」,这样就能顺利读取到Lua脚本的内容了。注意第二种方式,不需要传入扩展名。
2024-01-29 17:47:24 639
原创 Unity 中使用Windows语音识别功能
怎么样在Unity中调用Windows的语音识别API呢?(3)将语音识别结果显示在Unity的Text文本中。1,Unity中创建开始按钮和停止按钮,以及两个文本。2,创建以下脚本,且进行挂载,添加实例。(2)获得语音识别结果。
2024-01-29 15:55:03 997 1
原创 Unity 获取物体表面上最近的两个点
1,通过ClosestPoint API获得物体A碰撞体 到物体B最短的那个点。即物体A表面到物体B最短距离的点。3,两个点之间的距离也就是物体表面最近的两个点。用途:实现塞尔大:王国之泪中的粘接功能可能需要。2,同理获得物体B表面到物体A最短距离的点。
2024-01-29 15:24:38 709 3
原创 Unity 简单UI框架
5,核心功能:(1)打开面板 (2)关闭面板 (3)检测配置路径 (4)检测缓存。1,通过Resources.Load加载。3,使用重载进行动静分离,创建新画布。2,使用字典进行缓存。
2024-01-29 14:52:18 500
原创 DoTween动画无法按照预期位置移动
"Travel_Log_Panel"是"Character_Image"父物体,父物体x+300,子物体的真实移动相当于x+300-300也就是原地不懂。:DOLocalMove移动是本地坐标,也就是和父物体有关,在父物体移动的时候这个DOLocalMove则不准确。原因不详 可能是DOLocalMove和DOMove的关系,刚刚又遇到了。会闪现一段距离再朝预定方向移动。
2024-01-09 17:56:04 541
原创 Socket 解决大端小端问题
下面是经过简化的BitConverter.ToInt16源码,其中的IsLittleEndian代表这台计算机是大端编码还是小端编码,不同的计算机编码方式会有不同。
2024-01-03 17:41:10 708
原创 Socket 解决粘包半包问题及代码实现
收到对端数据时,操作系统将数据存入Socket接受缓冲区,操作系统层面上的缓冲区由操作系统操作,程序不能直接操作它们,只能通过socket.Receive、soket.Send等方法间接操作。Socket Receive方法把接受缓冲区的数据提取出来,比如Receive(readBuff,0,2),接受两个字节的数据到readbuff。如果系统接受缓冲区为空,该方法会阻塞。Send方法同理。如果发送端快速发送多条数据,接收端没有及时调用Receive,那么数据便会在接收端的缓冲区中。
2024-01-03 15:38:32 1406
原创 Unity脚本生命周期
FixedUpdate():每隔一定时间间隔调用一次,默认0.02s,和机器性能无关。Start:只有脚本第一次被设置可用才调用,在可用和不可用之间循环不会反复不调用。OnEnable:脚本组件可用时才调用一次,在可用和不可用之间循环会反复调用。LateUpdate():每帧调用一次,一般放滞后的方法,如实现摄像机跟随。Update():每帧调用一次,和机器性能有关。OnDisable():每当其脚本组件被设置为不可用时调用一次。OnDestroy():每当其脚本组件被销毁时调用一次。
2024-01-02 07:03:31 392
原创 《数据结构与算法图解》 第13章 图
图是一种善于处理数据的数据结构,使用它可以很轻松地表示数据之间是如何关联的。按照图的术语来说,每个结点都是一个,每条线段都是一条。当两个顶点通过一条边联系在一起时,我们会说这两个顶点是。
2024-01-01 13:20:15 386
原创 《数据结构与算法图解》 第10章 飞快的递归
大多数编程语言都自带用于数组排序的函数,其中很多采用的都是。快速排序依赖于一个名为的概念,所以我们先从它开始了解。
2023-12-31 23:08:46 328 1
原创 《C#本质论》 第9章 值类型
所有类型分为两个类别:引用类型和值类型。两者区别在于拷贝策略。值类型的变量直接包含数据,换言之,变量名称直接和值的存储位置。因此,将原始变量的值赋给另一个变量,会在新变量的位置创建原始变量值的内存拷贝。两个变量不可能引用同一个内存位置(除非其中一个或两个是out或ref参数,根据定义,这种参数是另一个变量的别名)。更改一个变量的值不会影响另一个变量。•避免创建消耗内存大于16字节的值类型。•·避免创建消耗内存大于16字节的值类型。•值类型的值一般只是短时间存在。
2023-12-31 13:44:53 1018 2
原创 《C#本质论》 第8章 接口
初学者主题:为什么需要接口接口有用是因为和抽象类不同,它能完全隔离实现细节和提供的服务。接口就像电源插座。电如何输送到插座是实现细节;电器不必关心电如何输送到插座,秩序提供兼容的插头。接口的强大之处在于,调用者可随便切换不同的实现而不需要修改调用代码。接口的关键之处是不包含实现和数据,注意其中的方法声明用分号取代了大括号。字段不能在接口声明中出现。如接口要求派生类包含特定数据,会声明属性而不是字段。接口声明的成员描述了在实现该接口的类型中必须能访问的成员。
2023-12-31 13:10:24 774 1
原创 《C#本质论》 第7章 继承
•派生/继承:对基类进行特化,添加额外成员或自定义基类成员。•派生类型/子类型:继承了较常规类型的成员的特化类型。•基/超/父类型:其成员由派生类型继承的常规类型。•继承建立了”属于 is-a“关系,派生类型总是隐式属于基类型。
2023-12-30 23:50:29 857 1
原创 《C#本质论》第6章 类
使用class前的上下关键字partial来声明分布类。不允许用分布类扩展编译好的类或其他程序集的类,只能利用分布类在同一程序集中将一个类的实现拆分成多个文件。
2023-12-30 21:54:21 951 1
原创 《C# 本质论》 第4章 操作符和控制流程
操作符对称为操作数的值(或变量)执行数学或逻辑运算或操作来生成新值(称为结果)。通常将操作符划分为三大类:一元、二元和三元,分别对应着需要一个、两个和三个操作数的操作符。此外,有些操作符以符号的形式呈现,例如+、-、?.或者??等,而另一些操作符则为关键词,例如。
2023-12-30 15:52:06 856 1
原创 《C# 本质论》 第1章 C#概述
C#所有代码都出现在一个类型定义的内部,最常见的类型定义以class开头。根据约定取名规范遵从PascalCase风格。设计规范•要用名词或名词短语命名类。•要为所有类名使用PascalCase大小写风格。•程序通常包含多个类型,类型包含多个方法。
2023-12-30 14:28:03 1048 1
原创 [Unity Shader入门精要]初级篇 代码拆解
从Unity Shader代码来进行Shader的学习,通过分析拆解代码来反推理论,从实践中学习shader,而不是纯粹阅读。
2023-12-29 20:35:04 2031 1
原创 [Shader 入门精要]——整体概述
调用Drall Call 命令GPU进行渲染,这个GPU渲染过程就是GPU流水线。我们无法控制几何阶段和光栅化阶段的细节,但是GPU向开发者开放了很多控制权顶点数据——几何阶段顶点——曲面——几何——裁剪——屏幕映射————光栅化阶段:三角形设置——三角形遍历——片元——逐片元——屏幕图像顶点着色器是完全可编程的,通常用于实现顶点的空间变化顶点着色等功能。曲面细分着色器是一个可选的着色器,用于细分图元几何着色器是一个可选着色器,用于执行逐图元的着色操作,或产生更多图元。裁剪。
2023-12-23 00:21:12 877 1
原创 [Unity网络游戏实战]网络游戏的“Hello,World”——Echo(回响)(新手向)
Echo程序是网络编程中最基础的案例。建立网络连接后,客户端向服务端发送一行文本,服务端收到后将文本发送回客户端。Echo程序分为客户端和服务端两个部分,客户端部分使用Unity实现,为了技术的统一,服务端使用C#语言实现。(现在大部分服务器由C++实现)
2023-12-21 21:28:00 999
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人