下面是两个示例方法,除了两个类引用外,它们都非常相似。即。一个使用FishSettings和FishTileData其他WallSettings和WallTileData。重构两种类似的方法将数据加载到不同的类
如何编写单个Method然后调用/引用它所调用的类?我需要一个通用方法吗?
void Fish(int id, GameObject tile, TileType tileType)
{
FishSettings settings = tile.GetComponent<FishSettings>();
foreach (FishTileData data in DataBase(tileType))
{
if (data.Id == id)
{
settings.Load(data);
break;
}
}
}
void Wall(int id, GameObject tile, TileType tileType)
{
WallSettings settings = tile.GetComponent<WallSettings>();
foreach (WallTileData data in DataBase(tileType))
{
if (data.Id == id)
{
settings.Load(data);
break;
}
}
}
void LoadData(GameObject _newTile, TileData _td)
{
switch (_td.GetTileType()) // This is a virtual Method in the base class : TileData
{
case TileType.Fish:
FishSettings settings = _newTile.GetComponent<FishSettings>();
settings.Load((FishTileData)_td);
break;
case TileType.Wall:
WallSettings settings = _newTile.GetComponent<WallSettings>();
settings.Load((WallTileData)_td);
break;
default:
break;
}
}
Load的定义是怎样的? –
与您当前的问题完全无关,但它看起来像是从数据库加载“所有内容”,然后手动搜索以找到您感兴趣的一个项目。几乎总是最好将搜索推入数据库,并让* it *更加高效地找到正确的项目。 –
'if(data.Id = id)'应该是'if(data.Id == id)'意味着等于而不是分配值? – peval27