问题描述
与标题中所说的差不多。
我已经构建了第二个 .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);
}
}
解决方法
嗯嗯,这很尴尬...
解决方案是先构建游戏项目,然后实际重新构建内容导入器/处理器项目,然后将其与内容管理器链接!
感觉自己好傻哈哈