- 博客(235)
- 资源 (7)
- 收藏
- 关注
原创 【渲染】Unity-分析URP的延迟渲染-DeferredShading
摘要:本文分析了Unity URP延迟渲染的实现原理。首先通过GBufferPass生成包含颜色、高光、法线、全局光照等数据的多重缓冲区,每类数据写入特定SV_Target。在光照阶段,DeferredLights类按光源类型(平行光、点光源、聚光灯)分别处理,通过全屏mesh或光源mesh进行逐光源绘制,在StencilDeferred.shader中采样GBuffer数据进行光照计算。半透明物体采用前向渲染单独处理。实现要点包括:支持MRT输出、GBuffer数据编码、高效光源批处理。技术延伸涉及SSA
2025-06-09 20:49:04
645
原创 【动画】Unity2D骨骼动画-Animation2D
利用SkinnedMeshRenderer的特性,构造其需要的参数,骨骼权重,骨骼位置,骨骼动画的计算这个库交给SkinnedMeshRenderer处理了。在某一顶点区域创建骨头,那么这个区域的顶点都收到这个骨头的影响。顶点最多可以受到n个骨头影响,游戏里一般是4个。精灵中不相连的部分都可以算作一个独立的块,也可以在制作的时候自定义切块,一般这些切块是人性骨骼的躯干、头部、四肢、武器。蒙皮,即把图片盖在模型上,使用某个精灵生成网格,每个顶点自动对应到texture某个uv坐标,编辑器下完成,美术的活。
2025-06-08 17:20:01
260
原创 【UI】特效-内容到达边缘后渐隐效果
摘要 本文介绍了Unity中实现UI滚动边缘渐隐效果的解决方案。该技术通过在Shader中计算像素点与边缘的距离,实现越靠近边缘透明度越高的视觉效果。关键点包括:1) 修改UI Shader和TMP_SDF-Mobile.shader,添加边缘检测和透明度计算逻辑;2) 使用C#脚本管理渐变参数,包括边缘位置和渐变范围;3) 支持Image、Text和TextMeshPro等UI组件;4) 实现与Unity Mask系统的兼容性。解决方案通过世界坐标计算和shader特性开关,动态控制边缘渐变效果,适用于各
2025-06-06 08:48:00
579
原创 【业务框架】3C-相机-Cinemachine
《相机插件核心功能解析》摘要: 该相机插件整合了专业相机操作经验,提供虚拟相机控制、参数调节、随机噪声等基础功能,支持多相机协作与路径动画。特色功能包括:自动混合过渡系统、可扩展的虚拟相机架构、专业的Impulse抖动效果(含震屏实现方案)。核心组件为CameraBrain、VirtualCamera和MixingCamera,适用于第一/第三人称游戏、SLG场景及剧情动画制作。插件提供源码分析入口,涵盖FreeLook等特殊视角实现原理。(150字)
2025-06-06 08:01:12
545
原创 【业务框架】剧情对话-Dialogue System
《对话系统功能概述》摘要:该系统支持NPC对话、任务交互等场景功能。核心特性包括:可视化对话树编辑,支持分支选择和变量控制;数据库管理功能可定义任务、物品等交互元素;提供触发脚本机制,支持各类事件响应和C#方法调用;UI组件可自定义但需遵循系统接口规范。典型应用方式为在游戏对象上添加触发脚本,实现靠近交互或弹出对话等常见交互模式。系统还支持通过编辑器配置Lua操作来调用C#方法,实现动态逻辑处理。
2025-06-06 07:43:52
163
原创 【动画】unity中实现骨骼蒙皮动画
本文介绍了骨骼动画的核心实现原理,通过Unity引擎手动实现了一个简易的骨骼动画组件。作者首先解释了骨骼动画的基本概念,即模型顶点受骨骼权重影响的过程。接着提出了实现思路:利用Unity的Animation驱动骨骼变换,通过加权计算骨骼对顶点的影响。文中提供了完整的代码实现,包括顶点位置计算、骨骼变换矩阵应用等关键步骤,并展示了如何将处理后的网格渲染出来。最后作者表示如果获赞够多将推出GPU版本实现,强调动手实践对技术理解的重要性。该实现可作为学习骨骼动画原理的参考范例。
2025-06-02 14:19:55
961
原创 【渲染】拆解《三国:谋定天下》场景渲染技术
本文分析了《三国:谋定天下》的场景渲染技术,通过RenderDoc截帧发现其采用分块LOD地形渲染,使用CPU Culling和渲染着色器烘焙贴图,支持OpenGL ES 3.0。文章详细介绍了三谋的7级LOD系统、资源加载策略,并提出优化建议。作者还分享了实现类似地形系统的技术方案,包括地形切割、LOD生成、接缝处理等关键点,最后列出相关工具和参考资料。文章承诺若收藏点赞超过512,将手搓一个三谋场景实现案例。
2025-06-01 20:28:58
707
原创 观其大略之HybridCLR学习笔记
1 现有热更方案的开发效率、性能没有到达极限,还有提升的空间2 ios多平台政策导致热更新受限问题,ios禁止jit。根据我查找的资料,ios的代码段启动的时候就确定了,不能增加新的代码段。IOS封了内存(或者堆)的可执行权限,相当于变相的封锁了JIT这种编译方式,即机器码被禁止映射到内存。所以不能运行时生成机器码执行。
2024-03-06 19:57:09
1334
原创 解决Android工程Gradle下载不动的问题
第一次android工程会自己创建好下载目录,我们把gradle-7.2-bin.zip放到下面的目录,rebuild android工程,done!C:\Users\你的用户名\.gradle\wrapper\dists\。解决方式去阿里云的镜像站下载对应的版本解压到gradle的安装目录。我要装7.2,那我就下载7.2。
2024-01-27 14:18:29
604
原创 解决:Unable to resolve reference ‘UnityEditor.iOS.Extensions.Xcode‘. Is the assembly missing or incomp
Unable to resolve reference 'UnityEditor.iOS.Extensions.Xcode'. Is the assembly missing or incompatible with the current platform
2024-01-23 19:44:07
1335
原创 使用Rider C# Dll工程和Unity工程互相调用、断点方法
创建C# Dll工程,生成C#工程Dll创建Unity工程Unity调用C#工程的代码C#工程调用Unity工程的代码断点方法。
2024-01-11 17:09:53
1412
原创 紫禁之巅-Unity游戏开发教程:勇者斗恶龙之魔法石
开设课程是为了帮助对游戏开发感兴趣的小伙伴掌握游戏开发的思路、方法、技术。为了帮助学员掌握开发游戏的思路、技术,课程通过一个从零开发的第三视角的战斗探险游戏案例来讲解开发中的知识。为了学员有参考、实际学习、工作中能方便使用学到的东西,课程提供了笔者从零开发的Unity游戏工程,包含源码。先给大家展示游戏,代码。项目工程对学员掌握原理、回顾知识非常有用,因为项目的代码整洁,遵循代码规范,方便阅读和学习;对原理细节和实现的注释详细;这些可以帮助学员快速熟悉代码,掌握原理,回顾知识。
2023-09-17 23:41:15
479
原创 【Unity】解决UnityHub打开工程时只在转圈没反应问题
https://developer.unity.cn/projects/6066fc8dedbc2a0020fef5d1
2023-03-20 17:00:05
9064
2
原创 给XLua生成Unity Api的EmmyLua代码提示
编写Lua代码时使用Unity的Api没有代码提示影响效率,需要一个类型系统和代码提示,下面来解决这个问题。
2022-11-19 19:14:56
3179
1
原创 c language malloc() vs calloc()
https://byjus.com/gate/difference-between-malloc-and-calloc-functions/快速了解malloc更快,分配一整块内存,不会重置返回的内存空间的数据calloc更慢,收集多块内存分配,会用0填充返回的内存空间的数据
2022-04-11 10:17:27
136
原创 unity PackageManager下载的package缓存的位置
我的路径C:\Users\ak470\AppData\Local\Unity\cache\packages\packages.unity.cn这个路径根据用户名自己替换根据是国际版还是中国版,在C:\Users\ak470\AppData\Local\Unity\cache\packages里找
2022-02-13 22:29:39
6734
1
原创 unity多开脚本
使用方法找个空文件夹新建两个脚本配置bat脚本的路径双击bat脚本python脚本import osfrom posixpath import dirnameimport subprocessimport systargetProjectPath = sys.argv[1]tempBatFile = open("temp.bat", "w")existDirs = [f for f in os.listdir(os.getcwd()) if os.path.isdir(f)
2021-11-18 19:23:02
2640
原创 c#中message pack反序列化数组对象
直接转list用,AsListvar dataObj = MessagePackSerializer.Get<Dictionary<string, object>>().UnpackSingleObject(File.ReadAllBytes(inputPath));var arrayObj = (MessagePackObject) mapData["array"]var list = arrayObj.AsList();
2021-11-01 10:37:48
478
原创 Unity编辑器拓展-拖拽
拖拽2种做法使用ChildWindow自定义控件处理鼠标拖拽事件处理完成对控件位置的改变效果图点击add创建子窗口在选中窗口后把当前选中窗口和之前选中窗口用线链接起来本文介绍使用ChildWindow的拖拽using System;using System.Collections.Generic;using UnityEditor;using UnityEngine;namespace DC.DCIMGUIBox{ public class WindowN
2021-04-17 11:05:56
1417
proto_buffer.unitypackage
2019-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人