自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 资源 (8)
  • 收藏
  • 关注

原创 游戏的UI管理的完整机制总结及框架展示

自己根据源码总结出的一套UI管理机制,大概讲述了如何实现游戏中的UI管理。以下是具体的各种管理机制。

2023-12-05 00:27:36 1378

原创 A*算法实战——构建场景中的最优路径及实现NPC的自动寻路

A*(A-star)算法是一种静态网路中求解最短路径最有效的直接搜索算法。在电子游戏中最主要的应用是寻找地图上两点间的最佳路线。​

2022-07-25 15:58:34 2677 1

原创 Unity 农场 2 —— 种植系统

本文实现了unity的种植系统功能,实现不同种类的种植与收割作物,不同作物随时间生长的特性。

2022-07-25 11:44:24 2733

原创 Unity 农场 1 —— 环境搭建、背包系统、时间系统

本文实现了背包、种植、时间系统,以及使用A*算法实现了NPC的自动寻路和跨场景寻路。

2022-07-24 10:48:14 3888 5

原创 Blinn-Phong光照模型解析及其实现

本文使用OpenGL,实现了Blinn-Phong光照模型

2022-04-26 13:44:01 6243 1

原创 Unity3D RPG实现 1 —— 初始环境、战斗系统、场景切换与存储档

本系列实现了战斗系统、背包系统、敌人的简易AI,任务对话系统等。

2022-03-06 16:02:47 5529 1

原创 Unity3D RPG实现 3 —— 对话、任务系统

本文实现了对话系统、任务系统,可以和npc进行对话,接取任务,完成任务所需的条件即可领取奖励。

2022-03-04 23:06:43 16272 12

原创 Unity3D RPG实现 2 —— 背包系统

本文实现了背包系统,包含物品与数据库连接,物品的使用,拖拽交换、展示详情等功能。

2022-02-28 17:55:30 18032 10

原创 在unity中使用状态机编写敌人的AI(纯代码方式)

本文通过状态机实现了敌人的简易AI,包含巡逻、追踪、攻击、死亡等状态。

2022-02-10 17:44:36 5984 3

原创 计算机图形学 使用OpenGL的场景建模

本文基于OpenGl,实现了简单的阴影、光照、纹理、相机视角变换和人物动画。

2021-02-25 15:46:19 7872 15

原创 Lua的底层原理与C#交互原理浅析【更新中】

在Lua的C源码中,表是通过struct定义的,主要是Table结构。这个结构包括指向数组部分和散列部分的指针,以及这些部分的大小等信息。/* 一些标志位 *//* 散列表部分的大小 *//* 数组部分的大小 *//* 数组部分的指针 */Node *node;/* 散列表部分的指针 *//* 散列表的一个自由位置 *//* 元表 */} Table;Lua 虚拟机:Lua 是由 C/C++ 实现的,因此它可以直接与宿主程序(如Unity)进行通信。C# 与 Lua 交互。

2023-12-26 14:30:59 2745

原创 Unity 渲染顺序受哪些影响(相机depth、SortingLayer、Render Queue、透明)

1.Camera Depth: 越小越优先2.RenderQueue 2500以下1. 按照Sorting Layer/Order in Layer 设置的值,越小越优先2. 无此属性,等同于 Sorting Layer=default ,Order in Layer=0 参与排序2.RenderQueue 越小越优先3.RenderQueue 相等,由近到远排序优先3.RenderQueue 2500以上。

2023-12-26 12:45:21 2096

原创 Unity AssetBundle学习笔记

Unity 中的AssetBundles 是一种用于存储和加载各种资源的打包机制。它们允许开发者将游戏资源(如场景、模型、纹理、声音等)打包成一个或多个文件,这些文件可以在游戏运行时动态加载。AssetBundles 主要用于优化资源的管理和减少应用的初始下载大小。

2023-12-25 12:43:57 1094

原创 Lua的垃圾回收机制详解

Lua 使用的是标记-清除(Mark-and-Sweep)算法进行垃圾收集。标记(Mark)阶段:Lua 遍历所有活动对象(即那些仍然可以从根集合直接或间接访问的对象),并将它们标记为活动的。清除(Sweep)阶段:Lua 移除所有未被标记的对象,释放它们占用的内存。内存分配Lua 使用malloc和free(C语言标准库函数)进行内存分配和释放。内存泄漏尽管 Lua 提供了自动垃圾收集,但内存泄露仍然可能发生,尤其是在使用复杂的数据结构和循环引用时。

2023-12-25 00:39:23 2565

原创 Unity内置的四种渲染管线简介

Unity的渲染管线(Rendering Pipeline)负责将游戏场景转化为可以在屏幕上显示的像素。

2023-12-23 15:28:02 1083

原创 Unity协程的定义、使用及原理,与线程的区别、缺点全方面解析

协程的定义,先来看看官方给出的定义:当你需要延时执行一个方法或者是每隔一段时间就执行某项操作时,可以使用协程。以下是官方的案例:游戏中的许多任务需要定期执行,最容易想到的方法是将任务包含在 Update 函数中。但是,通常情况下,每秒将多次调用该函数。不需要以这样的频繁程度重复任务时,可以将其放在协程中来进行定期更新,而不是每一帧都更新。这方面的一个示例可能是在附近有敌人时向玩家发出的警报。此代码可能如下所示: 如果有很多敌人,那么每帧都调用此函数可能会带来很大开销。但是,可以使用协程,每十分之一秒

2023-12-23 12:32:25 963

原创 初级游戏客户端社招面试问题总结

有这么一个场景,使用C++,拿到一个第三方的库,然后遇到一个bug,需要去查这个bug找线索,在分析线索的时候发现,通过库生成的某个对象,大概是比较简单的对象,有一个私有的成员变量,如果说知道这个私有成员变量的值的话,就对查bug有很大的帮助,要怎么找到这个私有变量的值,能不能通过加一条日志。unity3d里 人物的一些流畅的动画,骨骼动画,比如说拔剑,挥剑,收剑,这些是怎么实现的,怎么样实现其流畅的效果,假如玩家的属性改变,比如速度变快了,那这些动画要做怎么样的处理?extern关键字呢。

2023-12-22 20:56:31 746 2

原创 Unity 性能优化的手段(对象池、静/动态批处理、GPU实例化、垃圾回收、LOD、LightMap)【更新中】

合并网格意味着将多个单独的3D模型(每个都有自己的网格)结合成一个单一的、更大的网格。在Unity中,Find系列函数(如FindObjectOfType,Find,FindChild等)是非常消耗性能的操作,因为它们需要遍历整个场景或者对象的所有子对象。批处理(Batching)是在游戏开发和3D图形渲染中常用的一种性能优化技术,尤其在使用像Unity这样的游戏引擎时。更好的做法是在Start或Awake函数中使用Find系列函数,将找到的对象保存在一个变量中,然后在需要的地方直接使用这个变量。

2023-12-04 16:52:40 2231

原创 游戏中的资源动态加载

动态加载允许游戏根据每个玩家的游戏进程和选择来加载资源,而不是加载所有玩家可能永远不会接触到的内容。游戏中的资源动态加载是指在游戏运行时根据需要加载和卸载资源的过程,而不是在游戏启动时一次性加载所有资源。动态加载可以在玩家进行游戏时无缝地加载新资源,例如新的游戏关卡、角色、纹理等。动态加载允许游戏快速启动,因为只加载必要的初始资源,其他资源可以在游戏进行时按需加载。动态加载是一种平衡游戏性能、内存使用和用户体验的高效方式,但它也需要精心设计和优化,以确保资源在正确的时间以合适的方式加载和卸载。

2023-11-19 22:25:36 673

原创 游戏中UI的性能优化手段

虚拟滚动:对于长列表等需要展示大量数据的组件,可以采用虚拟滚动的方式,即只显示用户可视区域内的部分内容,并动态地加载和回收其他数据项。图片优化:对于图片等需要加载大量资源的组件,可以采用图片压缩、懒加载、预加载等方式进行优化,从而减少网络带宽和加载时间,提高用户体验和页面性能。批量渲染:对于游戏中大量的UI元素,可以采用批量渲染的方式,即将相邻的元素合并为一个渲染对象,以减少绘制调用的数量,提高渲染效率。数据缓存:对于频繁变动的数据,可以采用缓存技术,将数据缓存在本地,实现快速加载和实时更新。

2023-11-02 23:47:09 978

原创 力扣二叉树题目专题解析

刚刚我们说过了二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存,这个定义没啥可说的,我们来看看链式存储的二叉树节点的定义方式。int val;大家会发现二叉树的定义 和链表是差不多的,相对于链表 ,二叉树的节点里多了一个指针, 有两个指针,指向左右孩子。144.二叉树的前序遍历(opens new window)94.二叉树的中序遍历(opens new window)145.二叉树的后序遍历(opens new window)

2023-03-27 00:09:09 679 1

原创 王道数据结构精选习题及解析

而为了记录最小值结点的前置结点,我们还需要一个结点,专门作为当前工作结点的前一个结点,工作结点后移一步的过程中,要保持该前置结点是工作结点的前一个结点。链表有一个头结点,我们初始化时也为其保留一个结点,也就是图上的a1,然后我们依次遍历a2及其后面的结点,将其在合适的位置插入。由于我们没有新建一个链表,而是在原来的l1的基础上去改箭头,所以我们需要一个多的指针去存储l1当前工作指针的下一个指针。还有就是最后一步,循环完毕时,最后一个结点是没有指向前一个结点的,因此不能忘记这一步操作!

2023-03-25 00:24:37 2191

原创 通俗易懂的讲解常用的设计原则及其实例

设计原则可以提高代码的可扩展性,可维护性,可重用性,以及易理解性,易测试性,是大型项目中常常会使用的设计思想,此处介绍几个常用的设计原则及其实例。单一职责原则 (Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因。开闭原则 (Open/Closed Principle, OCP):软件实体应该对扩展开放,对修改关闭。

2023-03-23 00:21:11 486

原创 网络同步——帧同步和状态同步解析

同步就是要多个客户端表现效果是一致的,而且对于大多数的游戏,不仅仅要表现一致,还要客户端和服务器的数据也是一致的。所以同步是个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。帧同步和状态同步是在网络游戏和多人在线应用中常见的两种同步方法,它们用于确保所有参与者看到的游戏状态一致。帧同步概念帧同步是一种同步方式,其中每个客户端都在相同的逻辑帧上执行相同的操作。在这种方式下,游戏状态的更新在固定时间间隔(例如,每秒30帧)内进行。客户端只需发送用户输入,而无需发送整个游戏状态。

2023-03-22 16:44:25 1573

原创 力扣并查集题目合集

并查集基础:并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些的问题。它管理一系列。

2023-03-20 01:22:34 237

原创 原码、反码、补码,有符号整数,无符号整数的关联与区别

原码(:原码表示法中,最高位(符号位)用于表示整数的正负(0表示正数,1表示负数),其余位表示数值的大小。负数的补码是保留符号位为1,然后对原码的数值位取反,最后加1。符号位为0表示正数,为1表示负数。如果是负数的话,补码到原码的转换,就是-1,然后再取反(不对符号位进行操作)。8位二进制原码,最高位(第8位)是符号位,剩下的7位表示数值。负数的反码是保留符号位为1,然后对原码的数值位取反(0变为1,1变为0)。首先要明确,原码、反码、补码都是有符号整数的表示方法,在实际应用中,最常用的是补码表示法。

2023-03-18 22:18:01 3408 4

原创 力扣题型——双指针题型全解【更新中】

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。

2023-03-13 17:51:23 345

原创 回溯法——力扣题型全解【更新中】

以前回溯时,我们只需要一个sum即可,比如上面那题分为两个等和子集,实际上只需要考虑一个即可。但是本题有k个,所以我们可以设置k个桶,然后每次dfs时使用一个球,将其放到1~k个桶里面。此外这里还有三个剪枝的方法,具体可以看上面那篇文章讲的很详细。

2023-03-09 17:04:32 435

原创 动态规划——子序列、编辑距离、回文子串

本文讲解力扣上所有典型的子序列、编辑距离、回文子串的题目,使用动态规划的解法来做。

2023-03-08 20:52:01 545

原创 动态规划——01背包,完全背包,力扣题型讲解

本文带你解决力扣上所有典型的背包问题,通俗易懂的讲解。

2023-03-08 20:44:34 2247

原创 通俗易懂的讲解AI行为树(更新中)

本文通俗易懂的讲解AI行为树

2023-02-17 14:49:53 307

原创 Unity一张图带你看懂Button的各种颜色设定(HighLighted、Pressed、Selected、Disabled Color)

button会有个基础颜色,建议设定为白色,因为这个基础颜色会和后续的颜色产生一个叠加效果。DisabledColor,当该按钮的交互功能关闭时便会变成DisabledColor。Pressed Color 当鼠标按下,但是不松开时的颜色,Selected color 当鼠标按下后,选中该按钮的颜色。HighLightedColor 当鼠标放上去时显示的颜色。NormalColor 基础时候的颜色。

2023-02-14 12:38:30 4039

原创 Unity通俗易懂的讲解PPU(Pixel Per Unit)与Camera Size

​unity 2d中的sprite ,具有一个参数:Pixel Per Unit初学者往往不知道这个代表什么意思,如何理解,怎么设置,这个在unity的美术素材的使用也是极为重要的基础知识。今天一文让你通俗易懂的彻底理解。​

2023-02-13 23:53:25 5073 2

原创 通俗易懂的讲解回调函数,保证让你看懂callback

什么是回调函数?相信很多人都似懂非懂,半懂不懂,今天就通俗易懂的讲解回调函数,让你能理解回调函数的大部分作用及意义。

2023-02-12 22:50:03 4763 1

原创 C# Lambda表达式含义及各种写法

Lambda表达式在各个语言中的表达方式都不太相同,本文重点介绍C#的Lambda表达式。

2023-02-12 20:19:12 2879

原创 unity使用对象池实现冲锋留下的残影效果

对象池,有想要用的物体时可以从池子里取,用完再放回去。因为在生成残影再销毁,这个过程中创建和销毁都需要耗费大量资源,因此尽量避免这样的浪费资源。实现残影的思路如下:其实很简单当人物按下冲刺键时,让此时人物突然加速,在加速的过程中并且每隔X帧就生成一个sprite,这个sprite的图像、位置、旋转角度和当前玩家所处位置一样,这样就相当于一个影分身。在冲刺的过程中就会留下分身,然后让这些生成的分身在隔一段时间后自动销毁即可。

2023-02-01 12:04:29 990

原创 Unity简单几行代码让玩家水平移动更丝滑真实

本文用基础但实用的代码解析了如何实现Unity中水平方向丝滑且真实的移动。

2023-01-22 22:46:16 3575

原创 IP、MAC地址,交换机路由器,ARP、NAT协议串讲

地址在互联网的逻辑上代表一个设备,在ip地址使用到期后,ip地址会被重新分配,然后再次绑定到其他设备上。地址,则对除了接收该消息的端口以外的所有端口进行群发,这种现象成为泛洪。地址后,我们想要直接进行通信,还不能通信,还需要获取对方这个ip地址对应的。地址的映射关系表:进行通信时,根据这个表查询是哪个端口,然后转发出去即可。地址在数据链路层工作,是绑定物理网卡,出厂时决定,是独一无二的。地址严重匮乏的今天,我们的计算机网络仍旧能正常的运转,多亏了。地址的二进制的前24位不变,后8位变为0。

2022-11-09 15:23:33 1732

原创 TCP相关面试题回答

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。

2022-08-22 19:05:29 534 1

原创 TCP/IP网络模型

为什么要有 TCP/IP 网络模型?对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套。这个网络协议是分层的,,接下来就根据「 TCP/IP 网络模型」分别对每一层进行介绍。

2022-08-22 16:11:38 1303

unity2d移动跳跃及攻击

unity2d移动跳跃及攻击

2022-02-09

虚拟场景建模.rar

使用OpenGL进行虚拟场景建模

2021-02-25

OpenGL环境配置及实验1.1.rar

OpenGL环境配置及实验1.1 详细说明见https://blog.csdn.net/weixin_43757333/article/details/110661666

2020-12-04

使用Unity创建的弹幕小游戏.rar

以Ten Seconds为主题创作的弹幕小游戏 使用Unity创建的弹幕小游戏 设置了14个关卡 4个不同的章节

2020-11-26

基于图像的内容检索代码.rar

深圳大学 多媒体系统导论大作业 基于图像的内容检索 对给定数据库的内容进行图片搜索 本文以图像为主要研究对象,运用图像分析、图像识别以及MATLAB等学科的基本知识来进行相关算法的研究。对图像内容进行颜色特征和LBP提取,然后根据欧式距离进行计算,根据距离的不同,进行最后的匹配。

2020-09-15

空空如也

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

TA关注的人

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