【发布时间】:2021-04-01 12:14:45
【问题描述】:
与标题中的内容差不多。
我已经为我的项目的内容管理器构建了第二个 .dll 文件,其中包含我的内容导入器/处理器,并在我的“参考”部分添加了该 .dll 文件,但什么也没有。管理器未检测到我的自定义进口商/处理器。不知道发生了什么,我找不到其他人遇到这样的问题,所以我希望有经验的人可以在这里帮助我!
顺便说一下,我正在使用 Json.NET 进行 Json 反序列化。
谢谢你:)
MapJson 代码:
public class MapJson
{
[JsonProperty("name")]
public String Name = "";
[JsonProperty("width")]
public Int32 MapWidth = 0;
[JsonProperty("height")]
public Int32 MapHeight = 0;
}
进口商代码:
[ContentImporter(".amap", DefaultProcessor = "MapProcessor", DisplayName = "Map Importer - Engine")]
public class MapImporter : ContentImporter<MapJson>
{
public override MapJsonImport(string filename, ContentImporterContext context)
{
string json = new FileHandle(filename).ReadAll();
MapJson data = JsonConvert.DeserializeObject<MapJson>(json);
return data;
}
}
处理器代码:
[ContentProcessor(DisplayName = "Map Processor - Engine")]
public class MapProcessor : ContentProcessor<MapJson, MapJson>
{
public override MapJson Process(MapJson input, ContentProcessorContext context)
{
return input;
}
}
编写者代码:
[ContentTypeWriter]
public class MapWriter : ContentTypeWriter<MapJson>
{
protected override void Write(ContentWriter writer, MapJson value)
{
writer.Write(value.Name);
writer.Write(value.MapWidth);
writer.Write(value.MapHeight);
}
}
阅读器代码:
public class MapReader : ContentTypeReader<Map>
{
protected override Map Read(ContentReader reader, Map existingInstance)
{
MapJson data = new MapJson();
data.Name = reader.ReadString();
data.MapWidth = reader.ReadInt32();
data.MapHeight = reader.ReadInt32();
// this constructor just sets my 'Map' class's Name, MapWidth and MapHeight variables
return new Map(data);
}
}
【问题讨论】:
标签: c# xna game-engine monogame game-development