BroMaker教程 [1]

本教程会教你如何使用BroMaker创建一个自己的Bro

cover

本教程会教你如何使用BroMaker创建一个自己的Bro

首先是需要的知识

  • C# 基础知识
  • Unity Mod Manager 的 Mod 的开发经验 (不是必需的)
  • dnSpy 的基本操作 (不是必需的)

第一部分 : 我的第一个Bro

在开始之前:

确保你已经下载并安装了 BroMaker

确保你至少有一个 C# 的 IDE (例如 Visual Studio, SharpDevelop, Rider ...)

现在开始吧:

首先打开你的 IDE 并新建一个类库 (我这里用 SharpDevelop 做演示)

image.png

在这里注意如果后续生成失败,请按照下列标黄的步骤操作

需要选择 .NET Framework 3.5 框架,在项目属性-生成中修改目标框架

image.png

然后选择 C# 3.0 和 .NET Framework 3.5

image.png

再点击转换

新建后将类名文件名改为和命名空间相同的名字(方便管理)

image.png

点击 项目-添加引用

image.png

点击 .NET集合浏览器-浏览

image.png

选择 BroMaker.dll (在你的 Broforce 的 Mods\BroMaker 目录里面)

image.png

点击打开后,以同样的方式添加对下列程序集的引用

  • Assembly-CSharp.dll (位于 Broforce\Broforce_beta_Data\Managed 目录内)
  • UnityEngine.CoreModule.dll (位于 Broforce\Broforce_beta_Data\Managed 目录内)
  • UnityModManager.dll (位于 Broforce\Broforce_beta_Data\Managed\UnityModManager 目录内)

完成后你的引用列表应如图所示

image.png

然后在代码中添加对 BroMakerLibUnityModManagerNet 的 using 语句

using BroMakerLib;
using UnityModManagerNet;

然后像一般的Mod一样创建Main类

static class Main
{
	static bool Load(UnityModManager.ModEntry modEntry)
        {
            return true;
        }
 
}

继承 BroBaseMaker 类

public class MyBro : BroBaseMaker
{
 
}

做到这一步你的代码应该长这样:

using System;
using System.Collections.Generic;
using BroMakerLib;
using UnityModManagerNet;
 
namespace MyBro
{
	static class Main
	{
		static bool Load(UnityModManager.ModEntry modEntry)
	        {
	            return true;
	        }
 
	}
 
	public class MyBro : BroBaseMaker
	{
 
	}
}

尝试生成一下项目,如果没有成功请检查上述步骤是否正确完成(特别是对程序集的引用)。

image.png

将下列代码粘贴进 MyBro 类

public override void bm_SetupBro(Player player)
{
	/**
	this.bm_DefaultMaterial = BroMaker.CreateMaterialFromFile();
	this.bm_DefaultGunMaterial = BroMaker.CreateMaterialFromFile();
	this.bm_avatarMaterial = BroMaker.CreateMaterialFromFile();
	this.bm_ammoMaterial = BroMaker.CreateMaterialFromFile();
	**/
	//上述为Bro外形的自定义,下节讲解
	base.bm_SetupBro(player);
}
 
protected override void Awake()
{
	originalSpecialAmmo = 3; // 特殊弹药(技能)的最大数量. (最小为0,最大为6)
	fireRate = 0.10f; // 两次开火的间隔时间(毫秒)
	base.Awake();
}
 
protected override void Start()
{
	base.Start();
	Rambro rambro = HeroController.GetHeroPrefab(HeroType.Rambro) as Rambro;
	BrodellWalker brodellWalker = HeroController.GetHeroPrefab(HeroType.BrodellWalker) as BrodellWalker;
 
	Projectile projectileRambro = Projectile.Instantiate(rambro.projectile, rambro.projectile.transform);
	//上述为获取 Rambro 的 实例 和 BrodellWalker 的 实例 ,同时注意上一行在获取子弹时必须要写(会在下一节讲解)
			  
	projectile = projectileRambro; 
	specialGrenade = brodellWalker.specialGrenade;		  
	//定义你的Bro的子弹和特殊弹药,在这里是Rambro的子弹和BrodellWalker的手榴弹
}

现在我们已经定义了一些Bro的属性,接下来应该向BroMaker注册我们的新Bro

将下列代码粘贴进 Main 类 中的 Load 方法

new NewBroInfo(typeof(MyBro), "MyBro");

好了,接下来生成你的项目

在生成的目录下新建 Info.json 输入以下内容

{
    "Id": "MyBro",
    "DisplayName": "Mybro",
    "Author": "Author",
    "Version": "0.0.1",
    "Requirements": ["BroMaker"],
    "LoadAfter": ["BroMaker"],
    "AssemblyName": "MyBro.dll",
    "EntryMethod": "MyBro.Main.Load"
}

然后将生成的 MyBro.dll 和 Info.json 一起打包为 MyBro.zip

再通过UnityModManager安装,然后进游戏查看效果吧

未完待续...

by

QQ