BeatSaber节奏光剑插件开发官方教程1-创建一个插件模板
原文:https://wiki.assistant.moe/modding/intro
一、简介
Beat Saber 开发环境:unity2018、C#、.NET framework 4.6。
此教程教你如何使用Visual Studio创建一个插件开发模板。
1 下载最新版Visual Studio
2 下载最新插件模板“BS.Plugin.Template.zip”
https://github-production-release-asset-2e65be.s3.amazonaws.com/164500300/d8a9d300-1cd9-11e9-9e97-59fa48084c2c?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190123%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190123T063620Z&X-Amz-Expires=300&X-Amz-Signature=a7bca54f93c7cb3427e0d811d02fc7a96d84b170a819404746183a5592e8ac50&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3DBS.Plugin.Template.zip&response-content-type=application%2Foctet-stream
(或Q群810303476,群文件下载)
二、安装模板
1 打开ProjectTemplates目录
一般路径:C:\Users\<Username>\Documents\Visual Studio 2017\Templates\ProjectTemplates
2 将前面下载的插件模板文件“BS.Plugin.Template.zip”放入ProjectTemplates目录(注意直接放入zip文件,不要解压)
3 打开VS,创建一个新项目,此时你应当可以在C#选项中看到“Beat Saber Plugin Template”,使用此模板创建项目
三、查看代码
在右侧“解决方案”浏览框中,双击“Plugin.cs”来打开代码文件,你应该能看到如下图所示的内容:
画红线的地方表明项目没能找到相关的引用,下面我们添加一下项目引用。
四、添加引用
在右侧的“解决方案”浏览框中右键“引用”,选择“添加引用”
在打开的引用管理窗口中你可以添加一下缺失的dll文件,这些dll一般都在“\<Beat Saber directory>\Beat Saber_Data\Managed”目录中
部分dll文件在游戏的Plugins目录中(也就是说,某些情况下你需要引用通过ModManager下载的dll文件,比如Async Twitch、Beat Saber Utils、CustomUI)
五、编译插件
如果所有引用问题都解决了,你可以试试编译一下(生成解决方案)
编译生成的dll文件就会出现在项目路径的“\Bin\Debug”目录下
将生成的dll文件放入游戏目录下的Plugins目录即可使用该插件了
六、一个简单的插件教程
https://www.cnblogs.com/cation/p/10309157.html
请务必关注我们的公众号获取最新资源和信息:
更多资源在我们的讨论Q群:
810303476
BeatSaber节奏光剑插件开发官方教程1-创建一个插件模板的更多相关文章
- BeatSaber节奏光剑插件开发官方教程2-简单的插件示例
原文:https://wiki.assistant.moe/modding/example-mod 一.在开始之前 1 确保你已经看过教你如何添加插件模板的教程,且你已经使用插件模板创建了一个新项目 ...
- BeatSaber节奏光剑双手柄MR教程
一.物料准备: 1 显卡1060及以上的PC主机 2 HTC VIVE头盔一套(头盔直插显卡上的HDMI接口) 3 1080P摄像头一个(插USB3.0) 4 绿幕一套,能覆盖整个摄像头的可拍摄范围即 ...
- google maps js v3 api教程(1) -- 创建一个地图
原文地址 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 在创建地图之前 ...
- WordPress插件制作教程(一): 如何创建一个插件
上一篇还是按照之前的教程流程,写了一篇WordPress插件制作教程概述,从这一篇开始就为大家具体讲解WordPress插件制作的内容.这一篇主要说一下插件的创建方法. 相信大家都知道插件的安装文件在 ...
- android 自己创建一个凝视模板
android 自己创建一个凝视模板 作为一名程序猿 不仅要有一个写代码的能力,养成一个良好的编写习惯也是非常重要的. 今天给大家具体介绍一下怎样创建凝视模板,给每一个类和方法都自己手动去凝视信息也 ...
- ArcGIS Desktop python Add-in 创建一个插件
1)创建一个项目 首先创建一个插件项目,本节介绍如何利用向导创建一个插件项目. 创建任何一个ArcGIS插件产品的过程都是一样的. 创建一个Python插件项目包括2个步骤: a) 选择一个插件项目文 ...
- (7)nehe教程1 创建一个OpenGL窗口:
不要用那个nehe ndk了 误人子弟! 转自: 一个窗口,代码可真多啊 http://www.yakergong.net/nehe/ 在这个教程里,我将教你在Windows环境中创建OpenGL程序 ...
- 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on
[本文转载自http://sixpoint.me/942/implementing-simple-addon/] 实现一个简单的插件 教程的这个部分带你使用 SDK 来实现, 运行并打包一个插件. 这 ...
- CodeSmith使用总结--创建一个基础模板
问:为什么要用CodeSmith? 答曰:因为我懒的写. Codesmith是一款非常不错的懒人工具,我也经常会用到,因为它在“重复代码”方面能够节省我们很多时间,并且解除了我们重复繁琐并且乏味的“码 ...
随机推荐
- C#反射实例学习及注意内容
C#反射的入门学习首先要明白C#反射提供了封装程序集.模块和类型的对象等等.那么这样可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果代码中 ...
- BZOJ 3362 Navigation Nightmare 带权并查集
题目大意:给定一些点之间的位置关系,求两个点之间的曼哈顿距离 此题土豪题.只是POJ也有一道相同的题,能够刷一下 别被题目坑到了,这题不强制在线.把询问离线处理就可以 然后就是带权并查集的问题了.. ...
- Response响应对象
1.HttpServletResponse HttpServletResponse是一个定义在Servlet API中的接口,继承自ServletReponse接口,用于封装HTTP响应消息.HTTP ...
- form.submit 方法 并不会触发 form.onsubmit 事件
做表单的时候发现一个奇怪的地方,总结下: form.submit 方法 并不会触发 form.onsubmit 事件,看代码: <body> <div class="con ...
- Windows窗口的层次关系(转)
今天看到这篇文章,觉得蛮有用的,我之前也对这个不大了解,特转载此处. 转载地址:http://www.51testing.com/html/200804/n80848.html 在Window 的图形 ...
- HYSBZ 2565 最长双回文串 (回文树)
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1377 Solved: 714 [Submit][Status][Dis ...
- vitess元数据跨机房灾备解决方案
测试使用vitess的时候发现vitess元数据的实现有多种方案,etcd, etcd2, zk,zk2, 由于刚开始测试的时候使用的是基于k8s集群+etcd的,以下就分步说明灾备实现方案: 1. ...
- 单源最短距离 Single Source Shortest Path
单源最短距离_示例程序_图模型_用户指南_MaxCompute-阿里云 https://help.aliyun.com/document_detail/27907.html 单源最短距离 更新时间:2 ...
- spring 攻略
1.5 指定Bean引用 为了Bean之间相互访问,在Bean配置文件中通过<ref>元素为Bean属性或构造程序参数指定Bean引用. <property name="p ...
- 【python】-- 类的创建、__new__、__metaclass___
类的创建 前面的随笔都是关于类的知识,通过类创建对象,那这个类到底是怎么产生的呢? 1. 传统创建类 class Foo(object): def __init__(self,name): self. ...