Stardew Valley(星露谷物语)Mod开发之路 1环境配置
首先来说明一下,我写这个章节本身也是对学习过程的记录,主要参考了http://canimod.com/guides/creating-a-smapi-mod中的内容。也推荐大家看看。
*这些是我的开发环境*
操作系统:
macOS
SDK:
1 MonoFramework-MDK-4.6.2.16.macos10.xamarin.universal.pkg (貌似是.net平台)
2 XamarinStudio-6.1.2.44.dmg (这个应该是IDE)
ps:具体的版本依照实际的操作系统来定,或者安装vs。同时你也可以向上面那个英文教程学习~
*正式*
然而在正式配置环境之前,是的,你得保证游戏正常运行。然后依次安装上面两个软件(我相信这是一个很容易的过程,谢谢)。
*创建一个项目*
&恩,详细过程我还是直接借用过来翻译一下算了~
- 打开 Visual Studio 或者 MonoDevelop.
- 创建一个新的 solution with a library project.
- 在 Visual Studio中, 选择 Visual C# » Class Library. (确保你选择的是 “Class Library”, 而不是 “Class Library (.NET Core)” 或者 “Class Library (Portable)”.)
- 在 MonoDevelop中, 选择 Other » .NET » Library.
- 改变 the target framework to .NET 4.5 (for compatibility with Linux).
- 在 Visual Studio中: 右键 project, 选择 Properties, 单击Application 标签, 并且将 Target framework dropdown 选成 .NET Framework 4.5.
- 在 MonoDevelop中: 右键 project, 选择 Options, 单击 the Build » General 标签, 并且将Target framework dropdown 选成 Mono / .NET 4.5.
- 删除项目中的
Class1.cs或者MyClass.cs文件.
ps:按照上面步骤,我这里新建了一个solution和project名称都为firstMod的项目。需要注意后面的一些配置信息要与这里对应
*配置项目*
项目需要引用这个包 Pathoschild.Stardew.ModBuildConfig NuGet package. 它能够自动配置你的项目,针对当前的平台,正确加载合适的依赖库。
1.双击下图画圈的部分

2.弹出了如下界面,然后在搜索框中“Pathoschild.Stardew.ModBuildConfig”,安装并等待完成。

3.添加一个cs文件,名称 “ModEntry”

4.将如下内容复制进ModEntry.cs
using System;
using Microsoft.Xna.Framework;
using StardewModdingAPI;
using StardewModdingAPI.Events;
using StardewValley; namespace firstMod
{
/// <summary>The mod entry point.</summary>
public class ModEntry : Mod
{
/// <summary>Initialise the mod.</summary>
/// <param name="helper">Provides methods for interacting with the mod directory, such as read/writing a config file or custom JSON files.</param>
public override void Entry(IModHelper helper)
{
ControlEvents.KeyPressed += this.ReceiveKeyPress;
} /*********
** Private methods
*********/
/// <summary>The method invoked when the player presses a keyboard button.</summary>
/// <param name="sender">The event sender.</param>
/// <param name="e">The event data.</param>
private void ReceiveKeyPress(object sender, EventArgsKeyPressed e)
{
this.Monitor.Log($"Player pressed {e.KeyPressed}.");
}
}
}
5.创建manifest.json文件,内容如下,存放至工程目录下,其实位置无所谓,主要是最终应该放在游戏mod的目录下
{
"Name": "firstMod",
"Author": "iamfine",
"Version": {
"MajorVersion": 1,
"MinorVersion": 0,
"PatchVersion": 0,
"Build": ""
},
"Description": "获取按键消息",
"UniqueID": "iamfine.firstMod",
"EntryDll": "firstMod.dll"
}
6.编译整个工程后得到如下文件

7.将firstMod.dll 和 manifest.json两个文件复制到游戏的Mods目录下,如下图所示。

ps:安装smapi后,在macOS下,mod的目录是
/Users/huqian/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS/Mods
8.运行游戏后,这个mod会记录玩家在游戏界面中的按键信息,如下图。

Stardew Valley(星露谷物语)Mod开发之路 1环境配置的更多相关文章
- Stardew Valley(星露谷物语)Mod开发之路 写在前面
之前迷上了一款新游戏Stardew Valley,这几天发现游戏为插件开发提供了SMAPI编程接口,玩家可以方便的自定义游戏内容(瞬间感觉因缺思厅,额..),其实这几年的游戏许多都有mod机制,商家机 ...
- Xamarin Anroid开发教程之验证环境配置是否正确
Xamarin Anroid开发教程之验证环境配置是否正确 经过前面几节的内容已经把所有的编程环境设置完成了,但是如何才能确定所有的一切都处理争取并且没有任何错误呢?这就需要使用相应的实例来验证,本节 ...
- 使用EmBitz开发STM32项目的环境配置
一.EmBitz软件获取与安装 1.EmBitz软件的获取 EmBitz原名Em::Blocks,是基于Code::Blocks开发的,面向嵌入式的C/C++集成开发环境.支持J-Link和ST-Li ...
- PHP开发:Eclipse版环境配置
软件: 1.eclipse php版本下载地址:http://www.eclipse.org/downloads/packages/eclipse-php-developers/heliosr 2.A ...
- 喵的Unity游戏开发之路 - 互动环境(有影响的运动)
如图片.视频或代码格式等显示异常,请查看原文: https://mp.weixin.qq.com/s/Sv0FOxZCAHHUQPjT8rUeNw 很多童鞋没有系统的Unity3D游戏开发基础,也不知 ...
- Dapr微服务应用开发系列1:环境配置
题记:上篇Dapr系列文章简要介绍了Dapr,这篇来谈一下开发和运行环境配置 本机开发环境配置 安装Docker 为了方便进行Dapr开发,最好(其实不一定必须)首先在本机(开发机器)上安装Docke ...
- web全栈开发之网站开发一(Mac环境配置)
个人第一次写博客,想给大家分享的是PHP+HTML5+MySQL开发一个个人网站所需的部分技术,希望能帮到志同道合和开发者,别人小白高手勿喷就行 先说一下我在制作这个网站之前的配置: 我用的是MacB ...
- Android开发快速入门(环境配置、Android Studio安装)
Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...
- shiro开发,shiro的环境配置(基于spring+springMVC+redis)
特别感谢lhacker分享的文章,对我帮助很大 http://www.aiuxian.com/article/p-1913280.html 基本的知识就不在这里讲了,在实战中体会shiro的整体设计理 ...
随机推荐
- Oracle用户被锁解决方法
.查看用户的proifle是哪个,一般是default: sql>SELECT username,PROFILE FROM dba_users; .查看指定概要文件(如default)的密码有效 ...
- Redis 4.x RCE 复现学习
攻击场景: 能够访问远程redis的端口(直接访问或者SSRF) 对redis服务器可以访问到的另一台服务器有控制权 实际上就是通过主从特性来 同步传输数据,同时利用模块加载来加载恶意的用来进行命令执 ...
- Linux设备驱动程序 之 主次设备号
主设备号和次设备号 对字符设备的访问是通过文件系统内的设备名称进行的,这些名称被称为特殊文件.设备文件.或者简单称之为文件系统树的节点,它们通常位于/dev目录.字符设备驱动程序的设备文件可以通过ls ...
- Linux .bashrc
Set environmental variable // 用:隔开 export PATH=$PATH:<PATH >:<PATH >:<PATH >:----- ...
- react 实现数据双向绑定
好久没有更新了 只是都写在有道笔记中 今天整理下 一些基础的 大神勿喷 一个基础的不能再基础的数据双向绑定 因为react不同于vue 没有v-model指令 所以怎么实现呢? import Reac ...
- 解决Sublime Text3中文显示乱码问题
一.安装包管理器 使用Ctrl+~快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码 import urllib.request,os; pf = 'Package ...
- LC 974. Subarray Sums Divisible by K
Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have a sum ...
- Spring对象依赖关系
Spring中,如何给对象的属性赋值? [DI, 依赖注入] 1) 通过构造函数 2) 通过set方法给属性注入值 3) p名称空间 4)自动装配(了解) 5) 注解 package loade ...
- 为什么HashMap继承了AbstractMap还要实现Map?
前言 之前看源码一直忽略了这个现象,按理说HashMap的父类AbstractMap已经实现了Map,它为什么还要实现一次呢?遂上网查了一下,背后原因让人大跌眼镜. 原因 这是类库设计者的拼写错误,其 ...
- 二叉树实例学习(四)——获取节点的高度函数getHight()
树T中所有节点深度的最大值称为该树的高度(height),实际上每个节点与其所有子节点都可以看做一颗树,也就是说除了根结点,所有子结点都可以看做是一颗子树,因此每个结点都有树高.在本程序中约定,仅含单 ...