自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 资源 (7)
  • 收藏
  • 关注

原创 故乡的路

那一刻,我知道你像热爱生命一样热爱着它们。多想挽着你的手在田埂上欣然散步。我们悠闲地聊着脚下的土地和山林。你,默默守护着曾经栽种的树木。生怕在这夜中泛起一圈波澜。但你已是路边的一个土丘。轻轻、轻轻地那么柔软。

2024-03-31 09:55:13 143

原创 理解游戏服务器架构-逻辑底层架构

如果说部署架构犹如建房之中的工程设计图纸,那么逻辑底层架构就是地基和框架结构、承重墙设置。功能图纸的好坏决定了这个工程的模样和基本面貌以及这个功能的体量,逻辑底层架构就是决定着这房子能够抗震多少级,而业务架构那就是我们的装饰到底是怎么样的。逻辑底层架构是在根据逻辑业务场景为而实现的代码技术建设。逻辑底层为具体功能提供服务,它是业务的基础建设,是一个服务者,而不是具体逻辑的实施者。

2024-03-30 22:46:24 1241

原创 理解游戏服务器架构-部署架构

对方一直打他们的login服务器和网关,登录和网关它们没有做负载均衡,这种情况只能先上高防,后期把负载均衡加上,出现类似的情况,将新玩家导入到新的服务器,让ddos攻击有高防的机器,这样影响就小了很多。负载均衡是决定了游戏稳定和承载上线的总要环节,作为服务器后台开发,那一定要知道我们的瓶颈在哪里,要知道单个进程的承载和单个服的承载,要对服务器前期要有个预设值,通过这个这个预设值来进行总体的实际。在部署架构阶段,我们考虑的是我们架构设计的愿景,或者说是我们向往架构的设计的蓝图。需要保存数据的数据库服等。

2024-03-30 21:23:14 1100

原创 unity小程序websocket:nginx配置https (wss)转http (ws)及其他问题解决

为了服务器网络的通用性,我们在实现移动端的游戏转微信小程序使用websocket。对于微信小程序官方给出的技术标准是必须使用https+域名的访问方式(使用websocket也必须是wss即:支持https的websocket),但是https的key稀缺性和我们的服务器是分布式部署的,不可能在每一个于客户端链接服务器都配置key,所以服务器仅支持http的websocket即ws基于此,我们需要通过nginx代理来处理转发的问题。这样https的证书只需要在nginx中配置,同时在nginx中配置wss。

2024-01-09 17:49:56 2079

原创 unity:玩家从SDK注册到登陆就流失百分10几的思考

游戏最近在小范围买量测试,测试的平台某快某手平台,发现玩家在从SDK注册就到登录就流失百分10几,当我们通过打点数据发现这情况的时候,对于问题的分析百思不得其解,由于先前游戏已经在其他平台测试过,玩家从SDK注册到登陆只会流逝百分之0.5左右,百分之10几的流失让我们很是心痛,因为这一步玩家的流失,代表这游戏推广买量的成本的增加和留成的减少。本人是技术,首先找的问题是技术问题,发现部分问题的端倪。

2024-01-09 00:45:45 1037

原创 解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

通过日志我们发现,在unityActivity一启动的时候,我们就启动下载更新文件(也就是在awake函数中调用UnityWebRequest函数将StreamingAssets的初始包的assetbundle拷贝到可写的沙盒目录下),小概率爆出如上问题。最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多,bugly有时候并不能捕捉到这种情况,我们各种怀疑和查找,最终发现问题的根源。从头再来,最终我们在官网发现。

2024-01-08 21:37:03 1408

原创 以unity技术开发视角对android权限的讲解

在unity开发过程中,接SDK的时候有一个问题是绕不开,那就是合规问题,早期的时候对于权限设置和获取并没有那么多限制,或者说规范吧。现如今随着合规越来越严格,对于unity游戏开发人员对于android的权限有一些大致了解还是有其必要性,尤其是需要接SDK的小朋友而言,更是如此。这里就简约讲解下android有哪些权限分类,同时如何在运行时申请权限。由于android开发并不是我的主要技术防线,所以这里只做一个简单的知识普及而已。Android权限分类普通权限(安装时权限危险权限(运行时权限特殊权限。

2024-01-08 20:44:07 1475

原创 解决IDEA警告:The file size exceeds configured limit (2.56MB). Code insight features are not available

最近在接第三方的SDK,idea编译的时候无法编译通过,提示如下:单个文件大小超出了默认的设定值(2.56M),所以代码的检测和提示功能不可用。但是我们真正Build的时候确实能编译通过的不影响运行。其实:idea 这么做得目的是,避免单个文件过大以便造成它的代码提示信息过慢,提醒程序员尽量不要文件过大看到爆红,作为有强迫症的我们怎么能忍 既然是idea的设置,那么我们需要修改单个文件的设置大小。

2024-01-04 17:34:01 4533

原创 unity中Android各版本对应的SDK版本

在unity开发中经常出现兼容性的问题,老是忘记Android各版本对应的SDK版本,这里记录一下,以供自己查阅,如果unity打包生成android api过低,那么可能在最新的机型上无法运行,闪退或者各种异常。

2023-12-21 21:30:17 1633

原创 java反射运用及优化

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

2023-10-18 16:35:06 678

原创 python 在window对exe、注册表、bat、系统服务操作等实例讲解

接着要讲的python包含如下内容:调用exe运行程序、调用mis安装文件、和批处理文件,创建、开启、关闭window服务、设置系统变量等。该函数功能是:判断zookeeper服务是否存在,如果存在,关闭并删除,并启动bat文件注册zookeeper服务,并启动zookeeper服务。调用mis文件与调用exe文件他们同样需要使用subprocess库,但是有些许的不同,主要表现在。对于window服务,同样我们需要用到subprocess库,以我自己注册zookeeper服务为例。

2023-10-10 18:27:25 387

原创 解决idea爆问题: The file size exceeds configured limit . Code insight features are not available.

在使用idea 进行Java开发的时候,爆出了The file size(2.59MB) exceeds configured limit(2.56MB) . Code insight features are not available。这是idea告诉我们,我们idea编译的Java单个文件代码,超过了我们默认限定的长度(2.56M),在这里需要将我们编译代码文件的限定长度进行修改。

2023-10-10 16:58:20 2113

原创 爱的痛苦

没有比爱更痛苦的事甜蜜是生命中的精华何必彼此苛求不一定要的长久没有比爱更痛苦的事坎坷是生的追求不要为过去忧愁珍惜那一刻的邂逅

2023-07-03 17:43:44 108

原创 unity中如何查看网络是否可用状态

总之,获取 iPhone 设备的网络信号强度需要在 Objective-C(或 Swift)中编写相关代码,并与 Unity iOS 项目集成。通过使用 Core Telephony 框架提供的功能,您可以以编程方式获取到 iPhone 设备的网络信号强度,并将其在 Unity 中使用。在 Unity 中,获取 iPhone 设备的网络信号强度可以通过使用 iOS 的原生功能来实现,而不是完全依赖 Unity 引擎。通过这种方式,您可以在 Unity 中检查当前设备的网络连接状态,并根据需要执行相关操作。

2023-06-28 15:21:42 2074

原创 unity 开发中10个小知识(三)

build-in项目时相机的渲染顺序是通过摄像机的depth深度来相机的渲染顺序的,但是在urp项目中却不是,而是通过camera stack来管理在Unity中,使用URP (Universal Render Pipeline)时,相机属性的设置都是通过相机栈(camera stack)来管理的。将一个相机放入另一个相机的相机栈中,需要在Inspector窗口中对相机属性进行配置。具体步骤如下:拖拽需要放入相机栈中的相机至想加入的相机的“Additional Camera”属性中。

2023-06-25 18:12:14 878

原创 unity前端架构之事件系统完整代码实现

事件资源类是真正处理事件的内部类,它有三个重要的接口TriggerEvent 触发相应事件订阅Subscribe相应事件取消订阅Unsubscribe相应事件if (!return;ULog.Warn("重复注册事件 {0} {1}", type, handler);return;= null)订阅事件接口取消订阅接口立即触发接口发送事件。

2023-06-18 20:51:33 905

原创 unity前端架构之定时器完整代码实现

定时器是unity前端架构中必须有的一个模块功能。定时器一定要满足几个需求第一、需要能够添加和删除定时器第二、实现延时触发一次第三、实现循环调用第四、实现隔一定帧数调用一次帧定时器在希望某个操作在下一帧或一定帧数后执行,定时器接口中包含两个参数,定时器ID和object类型参数隔多少帧调用完整的帧定时器代码如下:try= null)如果是延时调用的一次定时器_intervalSeconds是延时时间。

2023-06-18 19:52:55 1331

原创 unity: C#的Action Event Delegate的异同

它们都与函数指针相关,并提供了可调用指向方法的代码块的方式。它们都是用于编写事件驱动和回调代码的通用概念。它们都可以用于实现委托模式,使触发对象与事件处理程序之间的解耦。Action和Event都是C#中的关键词,而Delegate则是一个类。Action和Func之间的区别在于Action没有返回值,而Func具有返回值。Delegate用于指向方法,而Event用于将事件与订阅器连接起来。

2023-06-18 18:20:59 2995 1

原创 高效的MurmurHash 算法实现

MurmurHash 是一种高性能的哈希算法,由 Austin Appleby 在 2008 年创建。它是一种非加密哈希算法,可以快速地计算出任意数据的哈希值。MurmurHash 算法的特点是快速、高效、低碰撞、低冲突,适用于各种哈希表、哈希集合、哈希映射等数据结构。它的哈希值分布均匀,哈希冲突率低,能够更好地处理哈希碰撞和哈希冲突。MurmurHash 算法的原理是将输入数据分成若干个块,每个块都使用不同的哈希函数计算出一个哈希值,然后将这些哈希值进行混合和运算,得到最终的哈希值。

2023-06-16 14:42:08 2565

原创 C# string 防止GC及内存分配

在 C# 中,字符串类型是一个引用类型,它的内存分配方式与其他引用类型类似,都是在堆上分配内存。1、字符串的如何内存分配;2、如何防止string产生GC;3、string使用注意情况

2023-06-16 13:40:26 2520 1

原创 unity 开发中10个小知识(二)

脚本执行序列指的是所有的 MonoBehaviour 对象实例的执行顺序,在 Unity 中,MonoBehaviour 对象的执行顺序对于处理和调整游戏对象及其组件之间的依赖关系非常重要。注销创建的对象是一种有效的方式,可以使用此功能来记录创建的新对象,并使Unity撤销和重做操作结果符合预期。在 Unity 编辑器中,MonoBehaviour 对象的执行顺序通常由所属 GameObject 中组件的执行顺序控制,或者通过脚本的“Execution Order”(脚本的执行顺序)属性控制。

2023-06-13 15:18:41 1761

原创 unity 开发中10个小知识(一)

现在记忆力越来越差,写过很多遍的内容,都有可能需要慢慢才能想起来,这里就记录下在unity开发过程中一些小的知识点。约束为T必须继承BaseComponent,并且带默认构造函数。如果a为空返回空,否则返回a.name。当a不为空时返回a,否则返回b。

2023-06-06 20:36:46 545

原创 C# list的sort排序

有时需要对List列表中内容进行排序,List 的Sort方法排序有三种结果 1,0,-1分别表示大于,等于,小于。List的sort的方法如何使用,如何实现降序和升序return 1;return 0;return -1;输出结果:为 10,12,14,

2023-06-06 16:01:14 7006

原创 C#实现可以遍历时删除的字典dictionary

在开发过程中我们会遇到,使用字典dictionary时,可以在遍历(for或者foreach)时想删除的某一个符合条件的节点,普通的dictionary的无法能够提供支持。一般情况下,我们往往需要定义一个字典dictionary 和一个List,来配合使用,比如:假定我一个玩家管理器需要管理很多玩家,在玩家的管理器的每帧调用的函数中需要遍历所有玩家,发现标记的IsDestroy的就删除该玩家。

2023-05-27 17:37:27 1735

原创 unity 序列化那些事,支持Dictionary序列化

unity中的inspector面板支持list,但是有时候我们需要Dictionary,尤其是我们需要通过asset资源与ScriptableObject脚本一起实现序列化时更是需要如此。如:技能需要通过id来确定访问单个技能数据,那必须满足key和Value的数据结构。由于unity并不是原生的支持对字典的序列化,这件简述了unity关于序列化与及自定义类的序列化的方法,同时实现在inspector面板中字典序列化问题,以及asset资产中实现序列化 Dictionary的方法

2023-04-16 13:28:42 4304

原创 “未为 Visual Studio Tools for Unity 生成此 Unity 项目”问题的解决

今日打开unity,运行脚本时,vs2019提示“未为 Visual Studio Tools for Unity 生成此 Unity 项目”。项目昨天还时好好的,隔一夜竟然出现这问题,发现昨天关机的时候,应该是直接关机,并没有先关闭unity进程和VS引起的。这里需要重新生成unity 脚本工程即可这里就记录下问题的解决办法,以便后出现问题的时候好查阅。

2023-04-12 11:36:33 2105 1

原创 unity中获得inspector面板rotation的值

在unity编辑器有时候要根据inpsector的值来做设定,比如限定摄像机的的旋转角度,设置rotation.x在一定的范围内。但是实际情况中inpsector的面板值是经过转换的值,需要通过eulerAngle欧拉值计算才能获得。

2023-04-11 18:26:19 1323 2

原创 保姆式教学-实现天空盒旋转

在一个小Unity项目中,需要将天空盒旋转,以便云朵能够简单移动效果,项目是URP项目,现做下记录,unity 编辑器是2020.1.0f1版本。早期的版本天空盒可以通过Camera.main的对象获得。现在URP项目统一使用RenderSettings 设置直接获得。

2023-04-06 16:48:13 1324

转载 深入理解GPU硬件架构及运行机制

对于大多数图形渲染开发者,GPU是既熟悉又陌生的部件,熟悉的是每天都需要跟它打交道,陌生的是GPU就如一个黑盒,不知道其内部硬件架构,更无从谈及其运行机制。本文以NVIDIA作为主线,将试图全面且深入地剖析GPU的硬件架构及运行机制,主要涉及PC桌面级的GPU,不会覆盖移动端、专业计算、图形工作站级别的GPU。若要通读本文,要求读者有一定图形学的基础,了解GPU渲染管线,最好写过HLSL、GLSL等shader代码。

2023-04-04 13:09:09 789

原创 leetcode java 大厂基础面试题附答案(四)

聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚簇索引,因为一个表的物理顺序只有一种情况,所以,对应的聚簇索引只能有一个。聚簇索引的叶子节点就是数据节点,既存储索引值,又在叶子节点存储行数据。Innodb 创建表后生成的文件有:frm:创建表的语句;idb:表里面的数据+索引文件非聚集索引(MyISAM引擎的底层实现)的逻辑顺序与磁盘上行的物理存储顺序不同。非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。索引命中后,需要回表查询。

2023-03-06 23:06:58 1248

原创 leetcode java 大厂基础面试题附答案(三)

栈是线程私有的,它的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够的内存去完成扩展,或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈,那么Java虚拟机将抛出一个OutOfMemory异常。代理是一种常用的设计模式,目的是:为其他对象提供一个代理以控制对某个对象的访问,将两个类的关系解耦。解析是静态的,在类加载的解析阶段就可将符号引用转变成直接引用。

2023-03-06 23:01:21 231

原创 leetcode java 大厂基础面试题附答案(二)

•分治法,将1亿个数据分成100份,每份100万个数据,找到每份数据中最大的 10000个,最后在剩下的10010000个数据里面找出最大的10000个。100万个数据里面 查找最大的10000个数据的方法如下:用快速排序的方法,将数据分为2堆,如果大 的那堆个数N大于10000个,继续对大堆快速排序一次分成2堆,如果大的那堆个 数N大于10000个,继续对大堆快速排序一次分成2堆,如果大堆个数N小于 10000个,就在小的那堆里面快速排序一次,找第10000-n大的数字;• 方法区中的常量引用的对象。

2023-03-06 22:53:09 1326

原创 leetcode java 大厂基础面试题附答案(一)

• 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet。DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。

2023-03-06 22:46:01 721

原创 进程、线程、协程详解

有时候无法理解进程、线程、以及协程的它们所存在的意义以及各有什么不同;同时如何深层次理解它们,才能在实际运用了能给我们多技术选择或方向。线程是操作系统能够进行运调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程分为内核线程和用户线程。

2023-03-01 13:08:35 1023

原创 lua中如何设置table只读

在C++等其他语言中,我们可以通过限定符const设置常量和常量对象,以防止该变量和对象被修改,提高数据的安全线。但是对于lua来说,是没有const限定符的,所以需要通过取巧的方式来限定。

2023-02-27 15:24:06 522

原创 LeetCode C++基础面试题汇总附答案(四)

这里整理了leetCode C++的基础面试第四部分,希望对大家有所帮助类与类之间的关系has-A包含关系,用以描述一个类由多个部件类构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类;use-A,一个类使用另一个类,通过类之间的成员函数相互联系,定义友元或者通过传递参数的方式来实现;is-A,继承关系,关系具有传递性;

2023-02-22 13:48:16 398

原创 LeetCode C++基础面试题汇总附答案(三)

用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元即为内存泄露。1). 使用的时候要记得指针的长度.2). malloc的时候得确定在那里free.3). 对指针赋值的时候应该注意被赋值指针需要不需要释放.4). 动态分配内存的指针最好不要再次赋值.5). 在C++中应该优先考虑使用智能指针.

2023-02-22 13:38:48 506

原创 LeetCode C++基础面试题汇总附答案(二)

这里整理了leetCode C++的基础面试第二部分,希望对大家有所帮助引用就是某个目标变量的“别名”,对应用的操作与变量直接操作效果完全相同。声明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因为该引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

2023-02-22 13:28:20 450

原创 LeetCode C++基础面试题汇总附答案(一)

这里整理了leetCode C++的基础面试第一部分,希望对大家有所帮助。

2023-02-22 13:21:50 1043 2

原创 基础面试题 :大端、小端及转换方式

在实际开发中,做过网络的小伙伴一定会碰到网络字节顺序(大端和小端)的问题,尤其unity游戏开发。因为对于C++和Java默认是大端开发,C#就非常另类,默认的网络的字节顺序是小端,有点另类,这里就牵扯到大小端的转换问题。一、字节序。

2023-02-20 21:40:42 1896

A* simplefind

unity3d寻路插件,我们公司的项目就用这个

2015-12-31

游戏中基于P2P架构和安全的解决方案(英文) pdf

比较详细介绍基于p2p网路游戏架构和安全的解决方法,提出了新的大型网路游戏的基于P2p网络技术安全技术的实现技巧,是一篇不错的书,可惜,是英文,原本想翻译,但是由于工作忙碌的原因,只得上传英文,希望对大家有所帮助

2011-04-15

as3_Socket_的简单实例

简单地描述了实现对as3 Socket的使用,对于初学者有一定的帮助

2011-04-15

线性代数与解析几何讲义

这绝对是一本好书,是游戏开发必看的一本空间几何与向量的书籍

2009-11-24

python25 脚本 python25.dll 下载

python脚本的安装程序,python脚本是不错的脚本程序,在游戏中的界面开发经常用到

2009-11-24

空空如也

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

TA关注的人

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