我对在游戏中实现面向对象编程感到困惑,希望你能帮助我。
所以我创建了:
ChunkClass
:块对象的基类
ChunkBuilder
:产生块的工厂静态类
Map
:定位我的块,物品,风景物品等的类。
我的ChunkBuilder
课程如下:
public static class ChunkBuilder
{
private static List<Chunk> _chunk = new List<Chunk>();
public static List<Chunk> Chunk
{
get { return _chunk; }
set { _chunk = value; }
}
/// <summary>
/// Create a chunk with tiles on position.
/// </summary>
/// <param name="tx">Tiles on the X Axis.</param>
/// <param name="ty">Tiles on the Y Axis.</param>
/// <param name="tz">Tiles on the Z Axis.</param>
/// <param name="pos">The Posiiont of the Chunk.</param>
public static void CreateChunk(int tx, int ty, int tz, Vector3Int pos)
{
_chunk.Add(new Chunk(tx, ty, tz, pos));
}
}
我认为我正在以错误的方式创建这样的块,因为这样我从ChunkBuilder
中的列表中获取块数据...但这似乎是错误的,因为,这是假设建设课程?同样在同一个ChunkBuilder
类中,我想添加一个方法RemoveChunkFrom(Vector3Int pos)
,这将完全破坏构建模式?我承认我现在正在编程4个月,而且我对如何正确地做这样的事情感到困惑。你能救我一下吗?
答案 0 :(得分:1)
将ChunkBuilder.CreateChunk
方法添加到列表后,让您的ChunkBuilder
方法返回新创建的块。
至于它的感觉..也许命名更改会有所帮助.. ChunkFactory
可能会成为{{1}}。
答案 1 :(得分:0)
我建议改变
public static void CreateChunk(int tx, int ty, int tz, Vector3Int pos)
{
_chunk.Add(new Chunk(tx, ty, tz, pos));
}
到
public static Chunk CreateChunk(int tx, int ty, int tz, Vector3Int pos)
{
Chunk chunk = new Chunk(tx, ty, tz, pos);
_chunk.Add(chunk);
return chunk;
}
然后,调用代码可以使用新的Chunk
而不是请求列表并尝试查找新项目。
现在,为什么数据保存在List
?如果添加删除项的方法,则“Builder”类不仅仅是构建器类。你需要考虑一个更好的名称来描述它的作用。