我正在更新一个星球基地的模块,但是入口方法给我带来了问题。错误是:
No overload for 'Update' matches delegate 'Action<UnityModManager.ModEntry,float>'下面是我遇到问题的源代码片段,在第13行出现错误:
using Planetbase;
using UnityEngine;
using System;
using UnityModManagerNet;
namespace Tahvohck_Mods
{
public class BetterHours_Main
{
[LoaderOptimization(LoaderOptimization.NotSpecified)]
public static void Init(UnityModManager.ModEntry modData)
{
modData.OnUpdate = Update;
}
#pragma warning disable IDE0060 // Remove unused parameter
public void Update(UnityModManager.ModEntry modData, PlanetDefinition planetDefinition)
#pragma warning restore IDE0060 // Remove unused parameter
{
StatsCollector sCollector = Singleton<StatsCollector>.getInstance();
EnvironmentManager eManager = Singleton<EnvironmentManager>.getInstance();
_ = (Singleton<EnvironmentManager>.getInstance().getDayTime() + Singleton<EnvironmentManager>.getInstance().getNightTime()) / 6f;
if (sCollector != null && eManager != null)
{
float dayHours = (float)GetDayHours(planetDefinition);
_ = (float)((eManager.getDayTime() + (double)eManager.getNightTime()) / (dayHours / 6.0));
}
}帮助将是欢迎的,因为我刚刚开始工作的星球基地mods。
发布于 2022-01-25 18:53:31
问题就在这份声明中:
modData.OnUpdate = Update;原因是您的Update方法与OnUpdate事件所期望的类型不匹配。如果您查看错误消息,它将告诉您什么是错误的:
“更新”匹配没有重载委托'Action'
粗体部分告诉您OnUpdate事件所需的类型。Action是泛型委托类型,尖括号中的类型告诉您所需的参数类型。
您可以在这里看到,它期望一个方法接收一个ModEntry作为第一个参数,一个float作为第二个参数。您的Update方法将PlanetDefinition作为第二个参数,因此它不匹配。
https://stackoverflow.com/questions/70841016
复制相似问题