首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于参数'Type‘的Unity set游戏对象

基于参数'Type‘的Unity set游戏对象
EN

Stack Overflow用户
提问于 2018-06-04 03:48:03
回答 1查看 53关注 0票数 0

我想创建一个策略游戏。当我单击操作栏中的"BuildHouse“按钮时,我希望我的经理注册应该建造的建筑物。

我的所有建筑物都是组件,所以我尝试将建筑物类型作为参数传递。

我的按钮执行

代码语言:javascript
运行
复制
public void BuildFarm()
{
    buildManager.SetBuilding(typeof(Farm)); // Farm is a child of Building
}

现在BuildManager知道了建筑物的类型。我试着迭代所有的建筑预制板,并选择一个匹配的类型。

代码语言:javascript
运行
复制
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知道要构建什么。如果这个想法不好,请提供一个更好的实现方式。

EN

回答 1

Stack Overflow用户

发布于 2018-06-04 03:56:06

我建议定义一个enum

代码语言:javascript
运行
复制
enum BuildingType
{
    Farm,
    House,
    ...
}

然后,您可以为Building定义Type属性

代码语言:javascript
运行
复制
public class Building
{
    ...
    BuildingType Type { get; set; }
    ... 
}

然后,您可以像这样调用SetBuilding (也许使用switch):

代码语言:javascript
运行
复制
public void SetBuilding(BuildingType buildingType)
{
    // act according to buildingType
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50670382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档