自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 校招C#面试题整理—Unity客户端

校招Unity客户端岗位C#相关面试题整理分享

2023-10-13 16:50:33 1307

原创 Unity工具类 ResourcesManager资源管理器

经过创建映射文件,读取映射文件,解析映射文件,现在我们能够得到一个名字-路径的映射字典,只需要封装一些通用的方法,即很容易的实现通过名称加载资源,在这个管理类中,还需解决缓存防止多次加载的问题,异步加载的协程和委托等等,下面是完整源码。资源的加载,一般路径会因为文件夹结构的调整经常改变,但资源名称很少会进行更改,解决这个问题的核心思想就是如何只用资源名称就能加载到Resources文件夹下指定的资源,可以编写一个Editor工具用来。通常来讲,直接从Resources下进行资源的加载,有几个明显的缺点。..

2022-08-02 14:00:12 2397 1

原创 Unity C#工具类 ArrayHelper

C#下传统的数组不支持Linq库,无法方便的进行查询,查找最值,批量获取等操作,利用泛型制作通用的ArrayHelper工具类,使得数组也像List一样支持基本的Linq库的操作。

2022-07-21 10:57:56 783

原创 PC与Android通过USB连接进行Socket通信

3.PC这边的Client想要向AndroidServer发送消息,直接向如图4396端口发送即可,注意有人可能注意到为什么不直接让7744直接和5037相连即fowardtcpP1为何不填7744,由于adb是监听端口收到的消息,直接用此端口发消息到5037其是不知该如何转发的,这一层不能缺少。2.为PC和Android搭桥的过程就是图中adbforwardtcpP1tcpP2,其中P1为win/linux等下任一空闲端口号,P2为Android端Server的端口号。...

2022-07-15 17:21:52 2537 1

原创 Unity的三种单例模式(饿汉,懒汉,MonoBehaviour)

​ 对象全局唯一,且经常被使用。学过面向对象的小伙伴对static想必都不陌生,其具有的特质和今天要讲解的单例十分相似,自然后续的单例模式也会使用到。刨根问底:static属性为何类中唯一共享?​ C#中创建的所有类都会存在一个全局唯一的类型对象(System.Type),类型对象中会保存此类的函数表,静态字段等等,也就是说其实静态字段存储在全局唯一对应的类型对象中,而不是存在于此类new出来的实例对象中,现在就能很好的解释静态字段两点性质啦。为了更好的实现代码复用,以下三种单例模式均会采用工具类的设计

2022-07-04 19:56:55 4718 7

原创 Unity XR实现交互(抓取,移动旋转,传送,射击)-Pico

基于Unity XR提供的最新的XR Interaction Toolkit工具包实现手柄抓取,摇杆控制移动和转向,手柄射线传送,捡枪射击等功能Demo,以Pico XR SDK为例进行讲解

2022-07-01 18:19:16 14954 9

原创 一、Vulkan开发理论基础知识

交换链管理着显存当中的N个渲染Buffer,它们组成Buffer队列交替使用片元着色器 FragmentShader渲染管线中光栅化阶段,经过三角形遍历后,在三角形内部的像素点生成片元,一般进行颜色和纹理坐标的插值。三角形线性插值算法利用三个顶点存储的RGB、纹理坐标等数据插值得到内部所有片元对应的值。上面是直接利用线性插值,求ColorL的过程,同理可以求出ColorR,然后在x轴方向再次线性插值就可以得到目标点的Color值了。Unity的渲染管线流程大致如下图...

2022-06-07 14:08:00 1297

原创 C# Dictionary源码解析

Dictionary底层原理本篇文章将介绍C#在.NET下的Dictionary的底层源码,源码都根据自己的理解加上了注释,源码直接到官网即可查看下载https://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs关键数据结构 Entryprivate struct Entry { public int hashCode; // 哈希值,-1代表此Entry未使用

2022-05-09 17:31:45 1378

原创 Unity下FSM有限状态机详解

FSM有限状态机详解文章目录FSM有限状态机详解FSM的定义FSM的适用性FSM的设计分析状态转换表的使用状态和条件的标识符Id条件基类的设计 FSMTrigger状态基类的设计 FSMState状态机的设计 FSMBaseFSM核心源码FSMTrigger.csFSMState.csConfigReader.csFSMConfigReader.csFSMConfigReaderFactory.csFSMBase.csFSMDemo 塔防实例效果展示状态转换表及配置文件FSMBase 状态机基础类F

2022-04-16 23:01:16 2014

原创 Shading Frequencies 着色频率和三角形顶点插值

Shading Frequencies 着色频率Flat Shading 逐平面着色Gouraud shading 逐顶点着色Phong shading 逐像素着色Blinn-Phong Reflectance 模型解决了如何对一个着色点进行着色,着色频率定义了该选择哪些着色点进行着色Flat Shading 逐平面着色利用三角形面的法向量进行着色操作,将着色结果作用于整个三角形面。每个三角形的面颜色一致,着色效果在三角面数少时不平滑,效果不理想。Gouraud sha

2022-04-14 10:44:08 418

原创 Blinn-Phong Reflectance Model 光照反射模型

文章目录Blinn-Phong Reflectance ModelBlinn-Phong反射模型简介Blinn-Phong反射模型的三种光照Blinn-Phong反射模型的变量定义着色的局部性Diffuse Reflection 漫反射漫反射理论基础漫反射公式推导Specular highLights 镜面高光镜面高光理论基础镜面高光公式推导Ambient Light 环境光环境光理论基础环境光推导公式模型结果,三个光的叠加Blinn-Phong Reflectance ModelBlinn-Pho

2022-04-11 22:27:08 1070

原创 Pico UnityXR中的手柄射线

PicoXR中的手柄射线前言​ 本文是继PicoXR中的输入事件博客的进一步补充,针对手柄的射线相关API进行解析,并以VR水果忍者为例子封装手柄射线的事件。手柄射线的获取XRRayInteractor 关键脚本,由Unity XR提供的射线交互器脚本有关此脚本详细的API请参考官方UnityXR的手册Class XRRayInteractor | XR Interaction Toolkit | 1.0.0-pre.8 (unity3d.com)下面介绍一些较为常用的获取射线和

2022-04-11 13:09:09 8615 3

原创 计算机图形学Viewing视图变换理论和公式推导

Viewing变换总结(Model+View+Projection+ViewPort)文章目录Viewing变换总结(Model+View+Projection+ViewPort)基本变换过程和理论Model transformation 模型变换View/Camera transformation 摄像机变换Projection transformation 投影变换正交投影变换 Orthographic Projection Transformation透视投影变换 Perspective Proje

2022-04-07 18:58:18 1116

原创 Unity框架之对象池GameObjectPool

Unity框架之对象池GameObjectPool文章目录Unity框架之对象池GameObjectPool对象池的核心思想对象池的使用流程对象池的设计通用的对象池框架对象池的数据结构关键方法:获取游戏对象关键方法:回收游戏物体对象池的拓展对象池的完整源码对象池的核心思想将需要频繁创建销毁的游戏对象缓存起来,将创建销毁行为替换成显示和隐藏,大大提高游戏运行效率。典型的以空间换时间的思想对象池的使用流程对象池的设计根据上图对象池的使用流程分析对象池的特点每个类型的对象应该有属于自己的独立的

2022-04-03 20:55:52 5653

原创 设计模式之工厂模式(简单工厂、抽象工厂)

工厂设计模式工厂模式的使用场景工厂模式专门负责 **有大量共同接口的类(同一个抽象父类的多个子类)**的实例化工作。解决了具体实例化new的问题,例如Road = new BitumenRoad(),用子对象沥青路作为当前使用的路,若道路类型经常改变,又想使用水泥路,林间小道等等,每次都要改所有地方,非常不便。解决思路:封装变化点,将实例化的过程抽象,利用工厂隐藏创建细节,根据客户端的需要返回请求的实例化对象。抽象工厂类的优点隔绝了对象的创建和使用,解耦合抽象了对象的创建

2022-03-21 16:16:33 403

原创 基于ET6.0框架登录系统全图文流程详解

基于ET6.0框架登录系统文章目录基于ET6.0框架登录系统登陆系统全步骤图文一. 账号登录1.客户端请求获取账户信息2. 客户端请求获取区服信息3. 客户端请求 获取/创建/删除 角色信息二. 网关服务器的连接1. 请求连接Realm网关2. 请求和Gate网关连接3. 建立Gate映射对象Player三. 游戏逻辑服务器连接四. 顶号逻辑流程图登陆系统全步骤图文一. 账号登录1.客户端请求获取账户信息客户端向账号服务器发送账户名和密码的消息,请求进行登录账号服务器和数据库交互,对

2022-03-19 12:42:07 4696 2

原创 ET6.0框架下基于Protobuf的网络通讯

ET6.0框架下基于Protobuf的网络通讯文章目录ET6.0框架下基于Protobuf的网络通讯Protobuf的介绍序列化和反序列化Protobuf简介Protobuf的使用普通网络通讯消息(直接通信无需转发)普通消息的消息类型客户端与服务端通信步骤示例源码ActorLocation网络通讯消息(经网关进行转发)Actor模型介绍Actor消息的类型Actor消息的传递步骤示例源码Protobuf的介绍序列化和反序列化序列化:将程序中的对象序列化成结构化数据存储格式文件(json,xml,by

2022-03-12 13:29:30 1085

原创 ET框架Excel配置持久化数据类(自动生成源码)

ET框架提供的Excel用法,配置过程,自动生成持久化类和对应Categroy源码,自动将数据实例化成持久化对象提供单例类访问数据对象,提供灵活的配置模式,满足服务器和客户端的配置需求。

2022-03-11 17:14:34 861

原创 ET框架的事件系统和异步编程详解

ET框架的事件系统(定义,发布,订阅),和ET框架下的异步编程(ETTask,async,await,Coroutine),以及与Unity提供的协程的比较。

2022-03-11 16:56:21 2529

原创 ET框架的基础逻辑,生命周期和Scene层级树

ET框架的基础逻辑文章目录ET框架的基础逻辑ECS思想和OOP思想的区别ECS下简易的逻辑的分发ET框架下实体的生命周期ET框架的Scene树ECS思想和OOP思想的区别​ 以传统RPG游戏为例,游戏中可能有Player,NPC,Monster等角色。传统的OOP思想主要是大量运用继承抽象多态,用来实现不同对象的需求。​ 而ECS则是将所有对象设看作一个实体,所有功能都看作组件,不同功能的对象其实就是挂载了不同组件的实体。所有实体都是等价的,不会出现实体间继承的状况,这样可以很轻松的完成功能多样

2022-03-11 09:28:31 4101

原创 Unity+ET6.0网络框架的网络开发基础理论

网络编程理论基础文章目录网络编程理论基础主机间通信概述Socket通信模型游戏服务器架构的演变过程用户登录逻辑详解ET6.0框架下登录源码解释主机间通信概述ip地址和端口号​ 生活中任何通信方式的前提,都必须知晓对方的一些标志性信息,进而唯一地确定目标进行通信。例如寄快递时的地址,打电话时的手机号等等。主机间的通信也需要一些标志性信息用以唯一的确定通信的双方,这些标志信息即为ip地址和端口号。​ 主机间通信的本质,其实是两台主机中程序的通信,例如主机A的微信应用发送一条消息给主机B中的微信应用,

2022-03-09 19:46:26 6297

原创 A*寻路算法,循序渐进,附完整源码

A*寻路算法—循序渐进(附完整源码)用途​ A*寻路算法的一般用途即为灵活地寻找初始点到目标点的最短路径。概述​ 灵活是A*算法更为注重的特性,可以任意添加障碍物,可以对不同地形的寻路损耗赋予不同的权重,可以设置优先级等等。最短路的算法有很多,Dijkstra,BFS(广度优先搜索)等等,本文着重介绍基于BFS实现的A星寻路算法。BFS算法原理​ 在介绍A星算法前,先介绍一下BFS求最短路的方法。广度优先搜索主要用到的是队列,求最短路的基本思路即为,每走一步都遍历以当前格子的九宫格范围内满足条件

2022-02-27 13:30:21 2155

原创 Pico neo3 快捷键汇总

Pico neo3快捷键汇总头盔电源键短按 灭屏(休眠)/亮屏(唤醒)长按 开机/关机Home键短按 进入Launcher界面长按 头盔校准组合键Home键 + 确认键 + 音量键- = 两个手柄均解绑(进入头控模式)Home键 + 确认件 + 返回键 = 进入2D设置模式手柄Home键短按 进入Launcher界面长按1s 头盔校准长按8s 手柄关机组合键Trigger键 + Home键 长按4s

2022-02-25 19:34:36 14406

原创 PicoXR中的输入事件

PicoXR中的输入事件前言​ picoXR为Unity提供的Unity XR SDK是基于Unity XR实现的各个功能,针对手柄和头盔的各个按键摇杆事件的获取,均是采用的Unity XR提供的方法。目前UnityXR只提供了if判断的方式每帧监听的方式,还未提供事件接口等形式。简介为方便读者理解后续API,先粗略介绍一下Unity XR监听按键摇杆的步骤。首先是获取需要监听的设备,然后判断此设备的某种行为是否发生,UnityXR是无差别对待各种品牌的设备的,每种品牌的设备的按键等也都不尽相同。自

2022-02-25 18:53:49 9078 19

原创 PicoXR中手柄射线与UI的交互

PicoXR中手柄射线与UI的交互本文将介绍在PicoXR中如何使用手柄射线与UI进行交互基本步骤开发Unity XR项目必不可少的要先右键点击Hierarchy面板 XR-Room-Scale XR Rig 生成一个XR Rig对象,此对象下包含了主摄像头,左右手柄控制器等,一并创建的XR Interaction Manager(XR交互管理器)也是必不可少的。右键 XR-UICanvas 创建Canvas只有在此Canvas下的UI组件才能和手柄射线产生正常的交互。注意事项以上的步骤如

2022-02-25 17:22:05 2860

原创 Pico neo3的UnityXR SDK接入流程

Pico neo3 的 Unity XR SDK接入流程SDK的获取​ 直接从Pico官网的开发者平台下获取即可SDK - Pico开发者平台 (pico-interactive.com),注意根据相应设备选择合适的版本和引擎平台。SDK的配置​ 前言:pico的官网提供了完善的文档供开发者查阅,想了解详细流程的读者可以去pico官网查看开发者文档。本人在此会根据开发经验为大家介绍一些接入过程中的"坑"和注意事项。配置的注意事项Android SDK的版本必须安装 API 29及以上(一般安装

2022-02-24 11:14:30 7707

原创 xLua热更新解决方案知识点汇总

XLua热更新解决方案知识点汇总文章目录XLua热更新解决方案知识点汇总前言热更新的本质C# Call Lua相关知识点Lua解析器:LuaEnvC# 获取Lua的基础类型C#获取Lua的全局函数functionC#获取Lua的表TableLua Call C#相关知识点程序主入口Lua调用C#的类Lua调用C#枚举Lua调用C#的数组Lua调用C#的ListLua调用C#的DictionaryLua调用C#的拓展方法Lua调用含ref和out参数的函数Lua调用重载函数Lua调用委托和事件Lua调

2022-02-11 16:28:58 1691

原创 Lua全知识点详细汇总(基础知识+面向对象+面试重点)

Lua全知识点汇总(超详细)文章目录Lua全知识点汇总(超详细)Lua中的注释用法Lua中的变量类型Lua的字符串操作Lua的运算符Lua的条件分支语句Lua的循环语句Lua的Function函数 (含闭包面试重点)Lua的多脚本执行**Lua的Table表**table表的遍历table表的公共方法table表的特殊用法(字典,类)**Lua的元表**概念方法**Lua的面向对象 OOP**封装继承多态OOP汇总代码 面试重点Lua的特殊用法Lua自带库函数Lua的垃圾回收Lua中的注释用法单

2022-02-07 15:13:28 1895 3

原创 Unity中AB包详解(超详细,特性,打包,加载,管理器)

Unity中AssetBundle(AB包)的概念,优势,特性与Resource的对比,全打包流程,AB包管理器源码和详细注解相关API。

2022-02-06 09:19:05 38758 5

原创 Unity热更新知识点详解及常用解决方案原理介绍

Unity热更新详解,多种热更新解决方案对比,相关原理介绍

2022-01-27 10:33:39 6089

原创 Leetcode算法题:旋转数组问题(全)总结 思路+题解+代码

旋转数组问题标签:二分查找,翻转数组题目:189.旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,

2021-10-14 20:32:30 3778

原创 Unity3D 渲染管线全流程解析

目录渲染管线(流水线,流程)一、渲染任务二、三个阶段1、应用阶段 1-1:数据的准备 1-2:设置渲染状态 1-3:发送DrawCall2、几何阶段 2-1:顶点着色器 2-2:裁剪 2-3:屏幕映射3、光栅化阶段 3-1:三角形设置 3-2:三角形遍历 3-3:片元着色器 3-4:逐片元操作 ...

2021-09-04 13:46:55 8565 5

空空如也

空空如也

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

TA关注的人

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