- 博客(71)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 Dots 常用操作
游戏中有多个蚂蚁群落,每个蚂蚁属于一个群落,如何设计数据结构?读取工具选择写入工具选择DOTS程序的两种模式定义宏:UNITY_DISABLE_MANAGED_COMPONENTS,会禁用托管对象DOTS调试宏为 release 版本生成调试信息查看泄露点。
2024-12-22 20:09:28
1050
原创 Unity DOTS
面向数据设计(DOD)Data-Oriented Technology Stack(面向数据的技术栈)传统方式的问题数据冗余,一般脚本继承自 MonoBehaviour,很多用不到的变量,方法都会被带进来单线程处理,unity 的组件只能在主线程运行编译器不够高效面向数据设计(DOD)本质是面向内存(缓存友好)设计DOTS可以应用到哪些地方?具有大世界流式加载的游戏具有复杂的大规模模拟的游戏具有多种网络类型的多人联线游戏具有需要客户端模拟预测的网络游戏,如射击游戏基础概念
2024-10-27 19:13:49
1658
原创 pico双目问题
使用 pico 实现双目效果,需要把两个相机看到的画面分别传到 pico 的左右眼。如果安装了 urp,则不会有 left, right 选项。就算代码强行修改也不管用,貌似 urp 不支持双目。
2024-07-29 14:35:09
335
原创 UniRx 使用和源码分析
Reactive X 是 Reactive Extensions 的缩写,一般简写为 Rx,最初是 LINQ 的一个扩展,由微软的团队开发,Rx 是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,支持大部分流行语言。
2024-06-16 21:56:43
1263
原创 Newtonsoft.Json 在安卓上报错
使用官方的 json 库,不要用 Newtonsoft.Json.dll,通过 Package Manager 安装 com.unity.nuget.newtonsoft-json。unity上使用 Newtonsoft.Json 序列化不报错,打安卓包运行就报这个错。设置中修改 Api Compatibility Level。
2024-06-16 10:38:59
995
2
原创 Failed to load dll
使用 Dependency Walker 查看这个 dll 引用,一推引用丢失。打开 Visual Studio Installer,点修改。选择 使用 C++ 的桌面开发,并勾选 MSVC v140。Unity运行时提示 dll 加载失败。最后确认是 C++ 组件缺失。
2024-04-12 18:02:03
705
原创 游戏框架搭建
使用框架的目标:低耦合,高内聚,表现和数据分离耦合:对象,类的双向引用,循环引用内聚:相同类型的代码放在一起表现和数据分离:需要共享的数据放在Model里对象之间的交互一般有三种A调用B的方法,A就必须持有B,形成单向引用关系,为了避免耦合,B不应该引用A,如果B想调用A的方法,使用委托或回调。总结:父节点调用子节点可以直接方法调用,子节点通知父节点用委托或事件,跨模块通信用事件模块化一般有三种。
2024-03-03 18:42:43
1932
原创 帧同步原理
上图表示严格帧同步流程,服务器和客户端约定每5帧同步一次,这里每一帧的时间间隔由服务器决定,UPDATE 0表示服务器发的第0帧数据,CTRL 0表示客户端发的第0帧操作,服务器在第5帧开始前收到了客户端A,B的数据,进行打包再转发给A,B。经常会有需要排序的列表或者数组,比如攻击距离自己最近的敌人,这时候就需要将身边的敌人进行距离排序,一般来说只要排序距离就行了,但是如果出现两个敌人距离一样的时候,就会导致在不同的机器上选择的敌人是不同的。帧同步:发操作,收操作。实现自定义定点数向量。
2024-02-26 17:43:00
1385
原创 Unity性能优化
使用条件编译特性//条件编译特性//没有"ENABLE_DEBUG_LOG"这个编译符号,所有的MyLogger.Log都不会编译到最终最终的程序集中MyLogger.Log("条件log");调试的时候加上这个预定义,发布的时候去掉这个预定义。//使用线程安全队列来保存日志字符串//主线程中调用,线程不安全,可以调用Unity的api//其他线程中调用,线程安全,不能调用Unity的api,可以在多线程中调用,使用文件保存日志/// 监听Debug.Log日志。
2024-01-27 22:21:04
2602
1
原创 Unity 光照
光照模式切换为 Baked 或 Mixed,Baked 模式完全使用光照贴图模拟光照,运行时修改光照颜色不生效,Mixed 模式也使用光照贴图,并且进行一些实时运算,运行时修改光照颜色会生效。在场景中添加 Reflection Probe,调整范围,需要反射的物体需要勾选 Static,重新烘培光照,就能在反射探针上看到反射的立方体贴图。每个黄色小球是一个光照探针,合起来为一个光照探针组吗,注意光照探针不要穿过地面或者墙壁,否则会影响效果。光照烘培只能作用于静态物体,想要作用于动态物体,需要探针。
2024-01-27 22:19:00
1753
1
原创 XCode Build报错
XCode Build时报以下错误错误提示表明生成的机器代码太大,超出了限制需要在XCode工程中添加宏定义,使得生成的可执行文件超过限制步骤:在项目设置页面中,选择 “Build Settings” 选项卡。在搜索框中输入 “Preprocessor Macros”。在 “Preprocessor Macros” 设置中找到 “Debug” 和 “Release” 两个配置项。在需要设置的配置项下,点击右侧的 “+” 按钮,添加一个新的宏定义。
2024-01-04 16:40:27
1630
原创 AssetBundle加密解密
AES使用相同的密钥来进行加密和解密,密钥长度可以是128位、192位或256位。AES算法采用替代、置换和混合的技术,通过多轮的操作来实现高强度的加密。使用AES算法,除了密钥,还需要一个IV(Initialization Vector,初始化向量)作用是在加密中引入随机性,以确保相同的明文在每次加密时都产生不同的密文,从而增强加密的安全性。C#提供了内置的加密库,其中包括对AES加密算法的支持,需要添加命名空间System.Security.Cryptography。"Tools/加密资源"
2023-12-23 16:54:40
1626
原创 WebCamTexture报错
使用WebCamTexture把相机的画面显示到 RawImage 上。这两个错是因为摄像头被占用,需要检查代码中其他调用摄像头的地方。执行 WebCamTexture.Play() 报下面的错误。
2023-12-18 16:11:42
729
原创 Unity 简单打包脚本
后面的选项会处理依赖资源,引用计数大于1的认为是公共资源,单独打包到common文件夹。前面的选项不会处理依赖关系,公共资源会打进不同的bundle里。这个打包脚本适用于做demo,脚本放在Editor目录下。"Tools/遍历文件夹下的资源,处理依赖并打包""Tools/递归遍历文件夹下的资源并打包"
2023-12-03 09:44:57
834
原创 网络通讯基础
因此,从这个意义上说,这个方法是非阻塞的。优先级反转:是指在使用信号量时,可能会出现的这样一种不合理的现象,即:高优先级任务被低优先级任务阻塞(高优先级任务正等待信号量,此信号量被一个低优先级任务拥有着),导致高优先级任务迟迟得不到调度。Select方法用于在多个Socket对象之间进行选择,以确定哪些Socket对象已经准备好进行I/O操作,前三个参数分别表示要检查的Socket对象的列表,最后一个参数表示等待的超时时间。依照上图建立客户端和服务端的连接并发送消息,这里用到的是同步方法,会阻塞。
2023-11-12 22:33:32
3780
原创 Unity 动画系统
使用Avatar把骨骼系统转为肌肉系统后,双手,双脚位置可能出现一些偏移,Unity会保存转换前骨骼系统下手脚的正确位置,并把这些位置放在IK Goal(目标位置)上,也就是上图中双手,双脚位置的红球,手肘处的红球和膝盖处的红球是IK Hint(辅助位置),通过它防止肘部关节出现奇怪的扭曲,Foot Ik参考的是IK Goal的初始位置。红色箭头为质心在水平面的投影,我们可以把这个投影当作Root Motion的根骨骼节点,这个点被称为root Transform,代码中这样访问它的位置和方向。
2023-09-10 23:14:53
1857
1
原创 Playable 动画系统
PlayableBehaviour 是一个用于实现自定义 Playable 的基类,它可以让开发者通过继承该类来自定义 Playable 行为,可以用于在播放过程中控制动画的逻辑/// 每帧调用return;//切换到下一个动画片段//当前片段权重设为1,其他为0typeof。
2023-08-12 13:24:11
895
原创 Learn Git Branching 记录
Learning Git Branching 可以说是目前为止最好的教程了,点击右下角问号显示常用命令。
2023-05-21 00:34:06
2072
2
原创 UGUI中点击判断的原理
首选需要理解 EventSystem 中的代码结构,EventSystem 目录下包含4个子文件夹,分别是 EventData、InputModules,Raycasters 和 UIElements,UIElements 下是 UI Toolkit 相关代码,这里不做研究,主要关注其他三部分内容。
2023-04-26 01:14:04
853
原创 使用StarUML生成C#代码类图
右键某个元素,在Format里可以设置显示或隐藏一些东西,比如隐藏从基类继承的字段,方法。在StarUML点击Reverse Code,选择刚才的文件夹。在右侧生成一个目录结构,点击CsharpReverse。点击Overview Expanded,生成代码类图。写一些简单的代码用来测试,把它们放入不同的文件内。官网下载StarUML,可免费使用,将所有的代码文件放入一个文件夹里。
2023-04-23 01:09:51
2416
2
原创 Shader 海面/水面
首先用Terrain在场景中随便做个地形,当作海底上面加个Plane作为海面实现海水效果要考虑海水深度对颜色的影响,法线移动形成波浪,菲涅尔,高光等效果。
2023-04-11 18:31:26
1872
原创 Shader 玻璃效果
需要注意的是渲染队列设置成透明队列(即"Queue"=“Transparent”)。保证当渲染该物体时,所有的不透明物体都已经被绘制在屏幕上,从而获取正确的屏幕图像。使用 GrabPass 获取屏幕图像并绘制在一张纹理中,以便我们在后续的Pass中访问它。采样这张纹理并显示到UI上,左下角是采样结果。《Shader 入门精要》
2023-04-09 20:29:37
363
原创 Unity Timeline及其相关插件
Timeline给不同类型的对象建立不同的轨道,在每个轨道的时间线上我们可以组织动画播放、音频播放,游戏对象的显隐等操作,也可以自定义轨道完成一些个性化操作使用Timeline需要Playable Director组件,它控制Timeline的播放,暂停,循环等功能在场景中选中某个游戏对象,Window -> Sequencing -> Timeline 打开Timeline窗口点击Create创建Timeline Asset,它存储轨道及片段相关信息。
2023-03-14 22:22:07
4277
1
unity自定义TextMeshPro编辑界面报错
2022-07-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人