UE4 虚幻引擎 GitSourceControl源码解析

效果功能图

在这里插入图片描述

背景与目标

资产的工作量很大,并不是个人在短时间内可以独自完成的,需要大量美术人员长时间的进行团队合作完成的,并且完成一版之后,后续也还有更新维护的需求。所以UE的Editor也提供了对资产版本管理的功能,里面默认包含了Git、LastVersion等功能,如果有需要自己加也完全可以自己加,我公司有需要自己加一个,所以研究了一下UE的GitSourceControl源码,准备抄作业。大概包含的功能是Connect、UpdateStatus、Add、Delete、Sync,对应基本都是去找到本机的Git Bash,然后输入Git命令,比如Git Status。

UE命令Git的命令
Connect连接Git Bash
UpdateStatus对应Git Status
Sync对应Git Pull
CheckIn对应Git Commit

在这里插入图片描述

GitSourceControlProvider

是一个代码控制的提供者,他的父类是ISourceControlProvider,实现了十多个虚拟函数。在StartModule的时候会把这个provider注册进SourceControl里面去,然后Editor的SourceControl就会加上这个Provider的选项供用户选择,用户选择后,后面有关资产的所有SourceControl的操作都会执行到这个Provider的Execute函数里来。

  1. Execute()

UE执行任何功能,比如Connect、UpdateSate、CheckIn、Delete、Add都会调到这里来,这里统一来处理业务逻辑,依据不同的命令选择不同的Worker来执行。执行后会把State存储下来,UE调取GetState函数来获取,UE依据此State来决定给各个资产显示怎样的图标。

  1. GetState()

获取状态的函数,一般这个函数会在Execute函数之后,Provider里有StateCache这个Tmap变量,存储了各个资产的状态。Worker执行完成命令后,也会更新StateCache。

  1. Tick()

在这个函数会把各个剩余Command拿出来检查一遍,看是否执行完毕,执行完成后,及时通过delegate通知UE。

FGitSourceControlCommand

可以理解为需要执行的命令,Provider里面会有把这些命令一个个创建并且存储下来,放到线程池里去执行。每个Command里包含一个Worker来决定具体要执行的任务,比如GitUpdateStatusWorker,就是去更新资产状态的工作者

  1. DoThreadWork

调用Worker执行任务,比如GitUpdateStatusWorker.Excute(Command), 执行资产状态更新任务。

IGitSourceControlWorker

这是具体的工作者,比如执行connect的工作者GitUpdateStatusWorker的父类就是IGitSourceControlWorker,里面有三个虚拟函数,提供各个工作去实现落实。

  1. GetName()

通过这个函数来判断是什么哪个工作者,比如执行FGitConnectWorker的名字就是叫“Connect”。

  1. Excute()

执行函数,这个函数的参数就是FGitSourceControlCommand,由FGitSourceControlCommand来告诉对哪些资产文件执行

  1. UpdateStates()

更新各个资产的状态,执行各个命令后,各个资产的状态也会随之改变,改变之后需要及时更新Provider的状态,方便UE调用。

GitSourceControlUtils

这是SourceControl的工具类,之前GitSourceControl就是在这个Util里面执行各个Git的命令来对资产的控制,比如在这Git Status来获取资产的状态。所以我对资产的管理也是放在了这里,比如拉取资产,资产差异对比。

  1. RunCommand 执行具体Git命令的函数

  2. RunUpdateStatus 执行Git Status

在StartModule里注册流程图

在这里插入图片描述

  1. 先是给当前Provider注册各个类型的Worker,告诉其我支持这些功能,如果有需要尽管调用。值得注意的是,这里并不是把这个Worker对象new出来了,而是放了个能够创建出这个Worker的Delegate,等真正需要的时候,再去执行这个Delegate,来创建出相应的Worker。

  2. 给SourceControl注册Provider,注册后在SourceControl里就会有这个Provider的选项,用户选择这个Provider后,后续的资产控制就会运行到这个Provider来,比如点击右键选择Sync。

执行UpdateStatus的完整流程图

在这里插入图片描述

  1. 用户进入某个文件夹后,UE执行Execute,并且要求执行UpdateStatus任务。

  2. 接到任务,依靠那个Delegate创建出UpdateStatusWorker。

  3. 放到Command,放到线程池里去执行。

  4. 进行MD5差异对比,算出相应的状态。

  5. Tick的时候获取到最新的资产状态。

  6. 当UE调用GetState时候返回最新资产状态,让其依据此来显示出相应资产图标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17323.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚幻4与Unity: 哪个游戏引擎是开发者的最爱?

转自: http://www.narkii.com/club/thread-335184-1.html 虚幻4与Unity: 哪个游戏引擎是开发者的最爱? 虚幻4 (UE4) 和Unity是目前市场上最热门的游戏引擎,也各自拥有为数众多的开发者,虽然一些大型的游戏公…

【UE4】虚幻引擎运行流程

前言 当前版本:4.26.2 本文原创 说明:有些名词保持英文可能更容易理解 目录 游戏流程总览 各个平台启动引擎的入口函数 引擎入口函数 GuardedMain() EnginePreInit 引擎预初始化 EngineInit 引擎初始化 EngineLoop 引擎主循环 EngineExit 引擎退…

【虚幻引擎】UE4/UE5插件

一、插件分类 插件分为七大类 Blank:空白插件,可以从头开始自己定义想要的插件风格和内容,用此模板创建的插件不会有注册或者菜单输入。BlueprintLibrary:创建一个含有蓝图函数库的插件,此模板函数都是静态全局函数&…

虚幻引擎5 C++游戏开发教程

虚幻引擎5 C游戏开发教程 与 Epic Games 合作创建。从基础开始学习 C,同时在 Unreal 中制作您的前 5 个视频游戏 课程英文名:Unreal Engine 5 C Developer Learn C & Make Video Games 此视频教程共5.5小时,中英双语字幕,画…

【虚幻引擎】带你了解UE4

行业前景 越来越多的开发者,开发商投入到UE4中,简单来说就是使用UE4的人越来越多,许多独立游戏,大型的游戏,大公司例如“腾讯,网易”都在使用UE4来开发,加上UE4对开发者来说使用完全免费&#…

【虚幻引擎】UE4/UE5 后期处理盒子(PostProcessVolume)

B站教学链接:https://space.bilibili.com/449549424?spm_id_from333.1007.0.0 一、简介 PostProcessVolume(后期处理盒子):UE4非常强大的一个后期处理,可以调节画面的色彩,相机的景深,视频的输…

芒格-“永远不要有受害者心态”

我们应该以什么样的心态去对待我们的生活? 我不是受害者,我是幸存者。(ps :芒格深处利益之中,手握财富,应该见到过很多阴暗的人性。 他 可能也有魔鬼的一面)受害者的感觉:我认为这是一种反其道而行之的人类思考方式&…

巴菲特+查理芒格+投资理论+经典语录+给韭菜的启示

巴菲特查理芒格投资理论经典语录给韭菜的启示 巴菲特: 一个老年人在零售店里发现老婆丢了,恰好遇到一个年轻人也在找自己的另一半,老人问:你妻子长什么样?年轻人答:“她可真是个金发美人啊,身材…

git多账号切换

参考文档: https://blog.csdn.net/lqlqlq007/article/details/80613272 https://blog.csdn.net/qq_36602939/article/details/79794686 1.ssh-keygen -t rsa -C "你的邮箱" 回车,查看rsa目录,先进入该目录,将里面已…

git 用户的切换

需求场景: 某天已入职了 发现电脑上已经存在一个git的账号 这时候你需要登录你的 也就是账号切换 再比如 你的git换号了 养了个小的git号 或是从新建号了 但是电脑还存在老的号怎么办 就是需要账号的切换 目的就是登上我的账号 拉取我的私有仓库 第一步 准备 查看当前的git用配…

Git切换账号

用了新的电脑需要切换git到自己的账户 winR 输入 CMD 后运行以下命令 查看用户名: git config user.name查看用户邮箱: git config user.email修改用户名和邮箱,user.name/email后面千万记得加空格 git config --global user.name "…

拥抱生产力变革!GPT4接入Office,动嘴就能Excel到PPT!

梦晨 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 一觉醒来,工作的方式被彻底改变。 微软把AI神器GPT-4全面接入Office,这下ChatPPT、ChatWord、ChatExcel一家整整齐齐。 CEO纳德拉在发布会上直接放话:今天,进入人机交互的新时代…

零代码编程:用ChatGPT合并多个表格中的内容到一个excel中

电脑有几百个excel表格: 表格里面表头是一样的,但是数据不一样 现在,想把每个表格中的内容合并到一张表中,然后进行数据处理分析,该怎么办呢? 用ChatGPTPython,很快就可以搞定。在ChatGPT中选中…

巴比特 | 元宇宙每日必读:美版权局判定用AI工具生成的图片不受版权保护,官方解释:AI生成具有不可预测性,但并非一刀切...

摘要:据GameLook报道,一名图书作者Kristina Kashtanova此前为其创作的漫画书《Zarya of the Dawn》向美国版权局提起注册,书中使用了部分由Midjourney创作的插图。版权局此前曾接受了这一注册,但在近日却宣布撤销这项授权。该机构…

虚拟邮箱怎么设置方法_商务邮箱一般用什么邮箱正式?VIP邮箱名怎么设置好?...

不管你处在什么身份,邮件都是对外沟通的重要途径之一,虽然你可能很早就接触了电子邮件,用过QQ邮箱、TOM邮箱等,但学生时代用到的真的也不多,很多时候用的也不讲究。不过,你一旦转变角色到职场,邮…

PHPMailer 发送163网易企业邮箱和个人邮箱, 163邮箱可能无法发送gmail邮箱,可使用qq邮箱解决问题

第一步:注册邮箱,获取客户端授权码 (个人邮箱步骤类似) 企业邮箱设置:客户端设置->开启客户端授权密码->生成授权密码->保存授权密码 第二步: 上代码 composer require phpmailer/phpmailer /…

mysql开启邮件服务_邮件服务之实现基于虚拟用户的虚拟域邮件系统

postfixdovecotSASLmysqlapacheextmailextman实现基于虚拟用户的虚拟域邮件系统 声明:省略了前面的基础配置包括安装MYSQL,postfix等,这里用的Apache,MYSQL是rpm的,postfix,courier-authlib是编译安装的&am…

基于虚拟用户的邮件系统配置

基于虚拟用户的邮件系统配置 实验说明: 操作系统:redhat5.8_x64bit 由postfix sasl courier-authlib MySQL(实现了虚拟用户、虚拟域) dovecot Webmail {extmail(extmain)} 组成的虚拟用户。 需要准备以下软件包: postfix-2.9.6.tar.gz co…

效果达OpenAI同规模模型96%,发布即开源!国内团队新发大模型,CEO上阵写代码...

明敏 发自 凹非寺量子位 | 公众号 QbitAI 国内自研大模型迎来新面孔,而且发布即开源! 最新消息,多模态大语言模型TigerBot正式亮相,包含70亿参数和1800亿参数两个版本,均对外开源。 由该模型支持的对话AI同步上线。 写…

深聊丨第四范式陈雨强:如何用AI大模型打开万亿规模传统软件市场?

“GPT大模型到底能不能用?用在哪里?” 这是目前中国大型企业一把手最关心的问题之一。AI大模型也被媒体称为“一把手”工程。 大型企业会非常认真地考虑大模型的应用。最近个把月,大型企业客户对大模型的热烈反应让第四范式首席科学家陈雨强…