【问题标题】:How do I check for divisibility in C#?如何在 C# 中检查可分性?
【发布时间】:2020-02-28 17:12:58
【问题描述】:

最近我一直在 Unity 游戏引擎中构建一个 2D 游戏,但我在让可分性工作时遇到了一些问题。我是社区的新手,所以代码可能很乱。在第 7 行的 if 语句中,我试图检查可分性,但它似乎不起作用,任何帮助将不胜感激!

public Vector3 desiredPostion;

void Update()
{
    Vector2 divisible = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    
    if (1 == 1){
        Vector3 desiredPostion = new Vector3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y, 0f);
    }   

    transform.position = desiredPostion;
}

}

【问题讨论】:

  • 当在 if 中时,您的“desiredPosition”超出了 Update() 方法的其余部分。
  • 正如 Kamalen 所说,只是为了说明如何修复它,您的 if 应该如下所示: if (1 == 1){ desiredPostion = new Vector3(Camera.main.ScreenToWorldPoint(Input.mousePosition) .x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y, 0f); }(请注意,我删除了 if 中的“Vector3”。

标签: unity3d unity-editor


【解决方案1】:

你声明了两次desiredPosition,删除第二次:

public Vector3 desiredPostion;

void Update()
{
    Vector2 divisible = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    if (1 == 1)
    {
       desiredPostion = new Vector3
       (
           Camera.main.ScreenToWorldPoint(Input.mousePosition).x, 
           Camera.main.ScreenToWorldPoint(Input.mousePosition).y, 0f
       );
    }   

    transform.position = desiredPostion;
}

【讨论】:

  • 就像作者说的那样,当您在本地范围内声明 Vector3 desiredPosition 时,它会隐藏字段“Vector3 desiredPosition”,并且本地“Vector3 desiredPosition”仅在 if 括号内可用,因此离开括号后本地 Vector3 desiredPosition 不再存在,因此 transform.position = desiredPosition 采用永远不会改变的 Vector3 desiredPosition 字段(因为在括号内您创建新的 Vector3 desiredPosition 在脚本最后到达您的分配之前被销毁
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2011-02-21
相关资源
最近更新 更多