c# - 本地游戏对象变量不能使用 switch 方法 (Unity)

标签 c# unity3d

我知道这是基本的,但我找不到答案。我有一个函数应该返回不同类型的游戏对象。我喜欢使用 switch 方法来描述每种类型的东西。错误和它发生的行显示在下面的代码中:

GameObject getElement(string type)
{
    GameObject newGO;

    switch(type)
    {
        case "A":
           newGO= functionWhichReturnsGameObjectWithTypeA();
           break;
        case "B":
           newGO= functionWhichReturnsGameObjectWithTypeB();
           break;
    }

    return newGO; // error: Use of unassigned local variable 'newGO'
}


GameObject myGO = getElement("A");

最佳答案

你需要在每个执行流程中给 newGO 一个值,所以有一个默认情况,如果 type 参数应该是 你要么抛出异常“A”“B”newGO 永远不应为 null,或者尽可能将其设置为 null。

这应该有效:

GameObject newGO;

switch(type)
{
    case "A":
       newGO= functionWhichReturnsGameObjectWithTypeA();
       break;
    case "B":
       newGO= functionWhichReturnsGameObjectWithTypeB();
       break;
    default:
       throw new ArgumentException("Unexpected argument");
}

或:

default:
   return null;

关于c# - 本地游戏对象变量不能使用 switch 方法 (Unity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58518461/

相关文章:

javascript - 我应该如何构建 .net 网站以使用 Web API?

c# - 如何在C#中实现P2P?

c# - 如何在 Visual Studio 2015 中禁用 C# 6 支持?

c# - 在具有不同坐标轴的系统之间转换欧拉角(Unity 和 Threejs)

c# - gameObject.GetComponent 返回 null

c# ListView :How to create Columns without header

c# - ASP.Net Architecture 解决方案/建议

c# - unity StopCoroutine 存在多层(或嵌套)时不停止协程 "yield return"

opencv - 如何使用 OpenCV 从建筑物楼层的顶层布局中找到墙、柱、梁、门、窗和房间的位置和尺寸?

c# - 为什么我的角色/相机在 Unity 2d 中卡顿?