我想创建一个策略游戏。当我单击操作栏中的"BuildHouse“按钮时,我希望我的经理注册应该建造的建筑物。
我的所有建筑物都是组件,所以我尝试将建筑物类型作为参数传递。
我的按钮执行
public void BuildFarm()
{
    buildManager.SetBuilding(typeof(Farm)); // Farm is a child of Building
}现在BuildManager知道了建筑物的类型。我试着迭代所有的建筑预制板,并选择一个匹配的类型。
public class BuildManager : MonoBehaviour
{
    [SerializeField]
    private GameObject[] buildings;
    public void SetBuilding(Type buildingType)
    {
        GameObject targetBuilding = buildings.Where(currentBuilding => buildingType == currentBuilding.GetComponent<Building>().GetType()).First();
    }
}我不知道是否有更好的方法让BuildManager知道要构建什么。如果这个想法不好,请提供一个更好的实现方式。
发布于 2018-06-04 03:56:06
我建议定义一个enum
enum BuildingType
{
    Farm,
    House,
    ...
}然后,您可以为Building定义Type属性
public class Building
{
    ...
    BuildingType Type { get; set; }
    ... 
}然后,您可以像这样调用SetBuilding (也许使用switch):
public void SetBuilding(BuildingType buildingType)
{
    // act according to buildingType
}https://stackoverflow.com/questions/50670382
复制相似问题