核心概念和基础流程核心概念CinemachineCore:CinemachineCore 是一个全局单例,是管理所有 CinemachineBrain 和虚拟相机的数据结构 Manager,同时提供虚拟相机计算更新的接口和事件的分发等。
CinemachineBrain:CinemachineBrain 是用于驱动虚拟相机的更新计算的 Manager,会绑定一个实体相机(一般情况就是挂在 MainCamera 所在的 GameObject 上),并最终将当前激活的虚拟相机结果作用到实体相机上,同时还负责更新计算两个虚拟相机的 Blend 混合计算。
CinemachineVirtualCamera:CinemachineVirtualCamera 是通俗意义上的虚拟相机,相机的「配置文件」,根据「配置」指定相机该如何运动,其下组合了一组 Component Pipeline,分成Body,Aim,Noise 等几个管线阶段,每个阶段可以选择一种组件算法:
Body:用来控制相机的位置移动
Aim:用来控制相机的方向旋转
Noise:用来添加相机的晃动计算
Finalize:将以上结算 ...
简介「魔兽世界」的插件是用 Lua 和 XML 编写的扩展程序,作用是用于增强、修改和替换「魔兽世界」的用户界面,或者实现一些游戏本身不具备的功能,方式是使用 Lua 调用游戏提供的 API 来实现特定的逻辑。
在游戏领域中,插件 和 地图 是两种常见的 UGC 形式,都是由用户/玩家来开发实现的游戏扩展,但是他们的侧重点有所不同,具体表现为:
插件:通过脚本语言调用游戏接口来实现,更多的是对游戏当前内容进行增强、修改和替换
地图:通过游戏提供的地图编辑器来实现,更多的是用于新增、补充游戏当前所没有的内容
在插件或者地图的开发过程中,体验也有所不同:
插件:插件的开发者更接近于游戏团队中的「程序」职位,为游戏提供当前所没有的功能,工作内容大多数是在撰写代码
地图:地图的开发这更接近于游戏团队中的「策划」职位,利用已有的工具来创造新地图,工作内容大多数是在关卡设计
常见插件「魔兽世界」常见的插件有如下几类:
界面增强
ElvUI:界面重塑插件,可以完全替换官方默认 UI,高度可定制化。
Bartender4:动作条替换插件,允许自定义动作条的位置、大小和透明度。
We ...
getml/reflect-cpp: A C++20 library for fast serialization, deserialization and validation using reflection. Supports JSON, BSON, CBOR, flexbuffers, msgpack, TOML, XML, YAML / msgpack.org[C++20] ~ getml/reflect-cpp:一个 C++20 库,用于使用反射进行快速序列化、反序列化和验证。支持 JSON、BSON、CBOR、flexbuffers、msgpack、TOML、XML、YAML / msgpack.org[C++20] (github.com)
概述游戏开发中会有大量的场景应用到反射:
序列化和反序列化
GUI 界面绘制
脚本接口的导出和绑定
目前 C++ 标准不支持反射,在此探讨一下一些开源反射库的实现方案,常见的反射方案有如下几类:
反射实现:静态反射 / 动态反射
元信息收集:手动注册 / 自动解析
AssetStudio 社区版本:
Perfare/AssetStudio:官方版本,已归档不再更新,不支持高版本的 Unity
zhangjiequan/AssetStudio:基于 Perfare 版本的更新版本,支持高版本 Unity 和 Lua 字节码反编译等功能
SiMaLaoShi/AssetStudio_Tuanjie:基于 zhangjiequan 版本的更新,添加了团结引擎的支持
这里使用 zhangjiequan/AssetStudio 作为基础来进行本地编译
编译步骤
下载源码:git clone git@github.com:zhangjiequan/AssetStudio.git
进入 https://aps.autodesk.com/developer/overview/fbx-sdk 页面下载 FBX SDK 并安装,根据本地的 Visual Studio 选择不同版本安装
打开 AssetStudio 工程,右键 AssetStudioFBXNative 工程并选择 属性 选项
将 平台 选项修改为 x64( ...
服务器安装安装
参考Helix Core Quick Start Guide, 适用于 Ubuntu 发行版,需确保有 root 访问权限。其他操作系统请参阅:Helix Core Server Administrator Guide 中的 Install the server 一章
12345678# 下载 perforce 公钥wget https://package.perforce.com/perforce.pubkey# 生成公钥指纹gpg -n --import --import-options import-show perforce.pubkey# 验证匹配gpg -n --import --import-options import-show perforce.pubkey | grep -q "E58131C0AEA7B082C6DC4C937123CB760FF18869" && echo "true"将公钥添加到 keyringwget -qO - https://package.perforce.com ...
搜索被 .gitignore 的文件Visual Studio Code 的搜索同时使用 .gitignore 和 .ignore 中的规则,如果某个目录被 .gitignore ,但是又想搜索其中的文件,可以新建一个 .ignore 文件,内容分别如下:
.gitignore:从 git 中忽略指定路径,内容为 /gitignore_directory
.ignore:让 Visual Studio Code 反忽略此路径,内容为 !/gitignore_directory
调试第三方代码在 launch.json 中设置 justMyCode
12345678910111213{ "version": "0.2.0", "configurations": [ { "name": "...", "type": "...", "request": "lau ...
参考了 hexo-theme-solitude 的 提交,给 hexo-theme-anzhiyu 添加了 giscus 评论系统的支持,在此记录一下修改过程
源码引入 hexo-theme-anzhiyu之前是使用 npm 的方式来安装 anzhiyu 主题,为了修改主题源文件,要改成使用源码引入的方式:
12git clone -b main https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git themes/anzhiyunpm install hexo-renderer-pug hexo-renderer-stylus --save
修改源码文件修改文件 themes/anzhiyu/layout/includes/third-party/comments/js.pug :
123456789101112each name in theme.comments.use case name when 'Valine' !=part ...
CLR 给每个 AppDomain 都提供了一个 GC 句柄表,该表允许应用程序监视 C# 对象的生命周期或手动控制 C# 对象的生命周期。表中的每个条目都包含对托管堆上的对象的引用以及如何引用程序如何监视或控制该对象的标志。应用程序可以通过 GCHandle 对象在表中添加和删除条目,定义如下:
123456789101112131415161718192021namespace System.Runtime.InteropServices { public struct GCHandle { public bool IsAllocated {get; } public object Target {get;set; } public static GCHandleAlloc(objectvalue); public static GCHandleAlloc(objectvalue, GCHandleType type); public stati ...