Unity编辑器如何多开同一个项目?

在联网游戏的开发过程中,多开客户端进行联调是再常见不过的需求。但是Unity并不支持编辑器多开同一个项目,每次都得项目打个包(耗时2分钟以上),然后编辑器开一个进程,exe 再开一个,真的有够XX的。o(╥﹏╥)o没错,说的就是我。。。

(注:后文写了个一键配置的工具,一定要看到最后哦~)

图片

这里其实也有替代方案,一种办法是使用两台电脑或者虚拟机,分别开启两个Unity客户端,这样是能够实现联调的需求。但是问题是开发效率如何得到保障,比如我发现了客户端的某个bug,修改电脑一中的代码后,电脑二怎么更新到最新的代码?

图片

我们可以通过git提交和更新、亦或者云盘进行传输,但还是那个问题,太慢了!作为开发人员是无法忍受这种延迟的,修改一个bug都要同步个几分钟,完成一个项目那还得了?

所以今天要探讨的解决方案就是:

如何使用Unity hub在本机多开客户端,并且保证两个客户端使用同一个代码+资源目录,一次修改两个客户端能够同时生效。

图片


1. 原因和方案

查阅了一些资料后,发现Unity hub无法多开的原因是:

在使用Unity Editor打开一个Unity项目时,Unity Editor会在项目目录建立一个Temp目录,同时对里面的一个UnityLockfile文件进行加锁,正是由于这个加锁的文件导致我们不能打开两个Unity Editor。

所以我们打开两个Unity Editor的解决方案就是,对除了Temp目录以外的所有文件目录做软连接(类似快捷方式),也就是这三个文件夹:

  • “Assets”、

  • “ProjectsSettings”

  • “Packages” 


2. 指令参数

windows下有一个传感符号链接的工具,使用方式:MKLINK [[/D] | [/H] | [/J]] <链接名称> <目标>

参数描述
/D创建目录符号链接。默认情况下,mklink会创建文件符号链接。
/H创建硬链接而不是符号链接。
/J创建目录连接。
......

我们这里用到的参数是[/J],语法为:mklink /j 目标文件夹 源文件夹


3. 操作步骤

1. 以管理员身份打开 Cmd(命令行)

图片

2. 使用 mklink 命令 分别创建源项目的 “Assets”、“ProjectsSettings”、“Packages” 这个三个文件夹的软链接。 

注意:

  • mklink命令语法 mklink /j 目标文件夹 源文件夹

  • 我这里的源文件夹:TankBattle,目标文件夹:TankBattle_Net2

图片

C:\Windows\System32>mklink /j C:\Code\Unity\TankBattle_Net2\Assets C:\Code\Unity\TankBattle\Assets为 C:\Code\Unity\TankBattle_Net2\Assets <<===>> C:\Code\Unity\TankBattle\Assets 创建的联接
C:\Windows\System32>mklink /j C:\Code\Unity\TankBattle_Net2\ProjectsSettings C:\Code\Unity\TankBattle\ProjectsSettings为 C:\Code\Unity\TankBattle_Net2\ProjectsSettings <<===>> C:\Code\Unity\TankBattle\ProjectsSettings 创建的联接
C:\Windows\System32>mklink /j C:\Code\Unity\TankBattle_Net2\Packages C:\Code\Unity\TankBattle\Packages为 C:\Code\Unity\TankBattle_Net2\Packages <<===>> C:\Code\Unity\TankBattle\Packages 创建的联接

3. 使用 UnityHub 打开这两个文件夹,启动项目

4. 运行测试,成功!

图片

5. 后续使用

在源文件夹中修改代码,软链接得到的目标文件夹会自动修改,只需要ctrl + r 在编辑器中reload下就能搞定,非常方便~


4. 工具

知道了操作步骤,我们还可以进一步提高开发效率,主要是为了方便粉丝们使用,我写了个小工具,可以一键完成上述操作。

操作步骤:

  1. 下载

我用夸克网盘分享了「Unity编辑器多开」,点击链接即可保存。

链接:https://pan.quark.cn/s/23475dc1e5d3

2. 打开

图片

3. 配置

config.txt需要配置源文件夹和目标文件夹路径,参考:

target_path:C:\Code\Unity\TankBattle_Net3source_path:C:\Code\Unity\TankBattle

4. 双击link.bat完成链接操作

图片

5. 使用unityhub打开这个文件夹,就完成了!

放在网盘里了,也算是惠及及人了~O(∩_∩)O哈哈~


好啦,以上就是本期分享的内容。

关注我,和我一起持续学习、无限进步!

 想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程

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

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

相关文章

Rust学习笔记(上)

前言 笔记的内容主要参考与《Rust 程序设计语言》&#xff0c;一些也参考了《通过例子学 Rust》和《Rust语言圣经》。 Rust学习笔记分为上中下&#xff0c;其它两个地址在Rust学习笔记&#xff08;中&#xff09;和Rust学习笔记&#xff08;下&#xff09;。 编译与运行 Ru…

python使用yaml文件以及元组样式字符串使用eval的类型转换

编程中&#xff0c;对于可变内容&#xff0c;最好是将其放入配置文件中&#xff0c;经过这段时间的学习&#xff0c;感觉使用yaml文件很方便。我的环境&#xff1a;win10&#xff0c;python3.8.10。 python使用yaml文件&#xff0c;首先要安装库。 pip38 install pyyaml 安装…

AWTK 开源串口屏开发(18) - 用 C 语言自定义命令

AWTK-HMI 内置了不少模型&#xff0c;利用这些模型开发应用程序&#xff0c;不需要编写代码即可实现常见的应用。但是&#xff0c;有时候我们需要自定义一些命令&#xff0c;以实现一些特殊的功能。 本文档介绍如何使用 C 语言自定义命令。 1. 实现 hmi_model_cmd_t 接口 1.1…

实现二叉树的基本操作

博主主页: 码农派大星. 关注博主带你了解更多数据结构知识 1我们先来模拟创建一个二叉树 public class TestBinaryTreee {static class TreeNode{public char val;public TreeNode left;public TreeNode right;public TreeNode(char val) {this.val val;}}public TreeNode …

linux 安装 mangodb 并设置服务开机自启

1、下载 wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz 2、解压 tar -zxvf mosquitto-1.6.8.tar.gz 3、编译安装cd mosquitto-1.6.8 make sudo make install4、在当前目录。进入mosquitto服务文件存放的文件夹 cd service/systemd可以看到3个文件 点击read…

【C/C++】设计模式——工厂模式:简单工厂、工厂方法、抽象工厂

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

二.基础篇: 面向对象进阶

1. 基础篇语法篇&#xff1a;一.基础篇&#xff1a;基础语法-CSDN博客 面向对象进阶 本章主要学习内容&#xff1a; static继承包&#xff0c;final&#xff0c;权限修饰符&#xff0c;代码块抽象类接口多态内部类 1. static static翻译过来就是静态的意思static表示静态&am…

AI语音模型PaddleSpeech踩坑(安装)指南

PaddleSpeech简介 PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库&#xff0c;用于语音和音频中的各种关键任务的开发&#xff0c;包含大量基于深度学习前沿和有影响力的模型。 PaddleSpeech安装步骤 提示&#xff1a;要找到一个合适的PaddleSpeech版本与pad…

java项目之相亲网站的设计与实现源码(springboot+mysql+vue)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的相亲网站的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 相亲网站的设计与实…

连升三级!openGauss单机版从2.1.0经停3.0.0升级至5.0.0

前言 如前文所述&#xff0c;我们的小demo项目起初安装了openGauss的2.1.0版本&#xff0c;由于2.1.0不是长期维护&#xff08;LTS&#xff09;版本&#xff0c;所以要升级到5.0.0LTS。考虑到虽然是DEMO项目&#xff0c;但也有些体验用户&#xff0c;所以为了保障业务连续性&a…

2023版brupsuite专业破解安装

安装教程&#xff0c;分两部分&#xff1a; 1、安装java环境、参考链接JAVA安装配置----最详细的教程&#xff08;测试木头人&#xff09;_java安装教程详细-CSDN博客 2、安装2023.4版本brupsuite&#xff1a;参考链接 2023最新版—Brup_Suite安装配置----最详细的教程&…

Java---类和对象第一节

目录 1.面向对象初步认识 1.1什么是面向对象 1.2面向对象和面向过程的区别 2.类的定义和使用 2.1简单认识类 2.2类的定义格式 2.3类的实例化 2.4类和对象的说明 3.this关键字 3.1访问本类成员变量 3.2调用构造方法初始化成员变量 3.3this引用的特性 4.对象的构造以…

一文弄懂 Linux 系统调用函数之 exec 函数族

目录 简介函数原型参数说明返回值函数区别使用示例采用参数列表传递参数&#xff0c;以 execl 为例采用参数数组传递参数&#xff0c;以 execv 为例调用 PATH 下可执行文件&#xff0c;以 execlp 为例使用新的环境变量给新进程&#xff0c;以 execle 为例 更多内容 简介 exec …

【Java】/*方法的使用-快速总结*/

目录 一、什么是方法 二、方法的定义 三、实参和形参的关系 四、方法重载 五、方法签名 一、什么是方法 Java中的方法可以理解为C语言中的函数&#xff0c;只是换了个名称而已。 二、方法的定义 1. 语法格式&#xff1a; public static 返回类型 方法名 (形参列表) { //方…

【Docker】Ubuntu下Docker的基本使用方法与常用命令总结

【Docker】docker的基本使用方法 镜像image与容器container的关系基本命令- 查看 Docker 版本- 拉取镜像- 查看系统中的镜像- 删除某个镜像- 列出当前 Docker 主机上的所有容器&#xff0c;包括正在运行的、暂停的、已停止的&#xff0c;以及未运行的容器- 列出当前 Docker 主机…

《二十一》QT QML编程基础

QML概述 QML&#xff08;Qt Meta-Object Language&#xff09;是一种声明性语言&#xff0c;它被用于描述Qt框架中用户界面的结构和行为。QML提供了一种简洁、灵活的方式来创建动态和交互式的界面。 QML基于JavaScript语法&#xff0c;通过使用QML类型和属性来定义界面的元素…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第二部分&#xff1a;内存 记忆的类型 记忆可以定义为用于获取、存储、保留以及随后检索信息的过程。人脑中有多…

Mac 使用:Micosoft Remote Desktop 远程优化

Micosoft Remote Desktop远程优化 服务器 远程会话环境设置 WinR打开运行&#xff0c;输入gpedit.msc 找到计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话主机->远程会话环境。下面这几个打开&#xff0c;有效提高rdp性能。 rdp协议同时使用…

计数排序,基数排序,桶排序

目录 计数排序: 基数排序&#xff1a; 桶排序: 计数排序: 计数排序是一种非比较型整数排序算法&#xff0c;特别适用于一定范围内的整数排序。它的核心思想是使用一个额外的数组&#xff08;称为计数数组&#xff09;来计算每个值的出现次数&#xff0c;然后根据这些计数信…

day09-常用API异常

1.时间日期类 1.1 Date类&#xff08;应用&#xff09; 计算机中时间原点 1970年1月1日 00:00:00 时间换算单位 1秒 1000毫秒 Date类概述 Date 代表了一个特定的时间&#xff0c;精确到毫秒 Date类构造方法 方法名说明public Date()分配一个 Date对象&#xff0c;并初始化…