【问题标题】:How do I get the specific gameobject clicked on out of many using that script in Unit2d C#?如何在 Unit2d C# 中使用该脚本从许多中单击特定的游戏对象?
【发布时间】:2019-02-12 12:09:40
【问题描述】:

我有一堆附有以下脚本的游戏对象。我正在尝试单击特定的游戏对象,以便可以移动它。调试基金工作正常,但我无法访问对象来移动它。

public void OnMouseDown()
{
    Debug.Log(senatorName + " is in chamber " + inChamber);
    GameObject disSenator = GameObject.Find(senatorName);
    newPos = new Vector3(0, 0, -2);
    disSenator.MoveSenator(newPos);
}

public void MoveSenator(Vector3 newPos)
{
    senator.transform.position = newPos;
}

脚本对象到该行 disSenator.MoveSenator(newPos);

我尝试了很多其他方法,即使没有错误也没有任何效果。

提前感谢您回答新手问题。

【问题讨论】:

  • 你所说的“脚本对象到”disSenator.MoveSenator(newPos);”是什么意思?
  • 对不起。我的意思是我收到如下错误:键入UnityEngine.GameObject' does not contain a definition for MoveSenator' 并且找不到扩展方法MoveSenator' of type UnityEngine.GameObject'。您是否缺少程序集参考?

标签: c# unity3d onmousedown


【解决方案1】:

假设您从 MonoBehavior 继承,对于鼠标单击的每个具有以下脚本的对象,这应该可以工作:

public void OnMouseDown()
{
    Debug.Log(senatorName + " is in chamber " + inChamber);
    newPos = new Vector3(0, 0, -2);
    transform.position = newPos;            
}

【讨论】:

  • OK 解决方案有效,但是当我尝试扩展代码以选择和计算新位置时,代码在函数调用期间失去焦点并且我得到“对象引用未设置为目的”。新代码进入房间脚本 chSc:
  • 这里似乎有很多答案。在某些情况下,您说它有效,但有另一个问题,而在其他情况下,您表示 MonoBehavior 与此处无关。您能否发布当前失败的代码,并解释失败的地方?
【解决方案2】:

使用 MonoBehavior 的 gameObject 属性访问脚本附加到的对象:https://docs.unity3d.com/ScriptReference/Component-gameObject.html

【讨论】:

    【解决方案3】:

    万岁!!!我在徒劳无功的情况下偶然发现了解决方案。诀窍是获取刚体而不是游戏对象。这是有效的代码:

     public void OnMouseDown()
        {
            Debug.Log(senatorName + " is in chamber " + inChamber);
            rbSenator = GetComponent<Rigidbody2D>();
            string newChamber = chooseMove(inChamber);
            newPos = actMove(newChamber);
            inChamber = newChamber;
            rbSenator.transform.position = newPos;
            Debug.Log(senatorName + " is in chamber " + inChamber);
        }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2018-07-30
      • 1970-01-01
      • 2023-04-02
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多