如何在其他脚本的任何其他函数中调用包含参数的函数?

时间:2019-01-14 10:06:32

标签: c# unity3d unityscript

如何在任何其他脚本的任何其他函数中调用以下函数?

我试图用其他脚本调用此函数

grab.StartGrab();

但它不起作用

public VRTK_ChildOfControllerGrabAttach other;

public void move()
{
    other.GetComponent<VRTK_ChildOfControllerGrabAttach>().StartGrab(//parameters here but how);
}

这是功能

public override bool StartGrab(GameObject grabbingObject, GameObject givenGrabbedObject, Rigidbody givenControllerAttachPoint)
{
    if (base.StartGrab(grabbingObject, givenGrabbedObject, givenControllerAttachPoint))
    {
        SnapObjectToGrabToController(givenGrabbedObject);
        grabbedObjectScript.isKinematic = true;
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

您应该使用>>> from itertools import starmap >>> list(starmap(lambda k, v: "%s=%s" % (k, v), t_dict.items())) ['k1=v1', 'k2=v2', 'k3=v3', 'k4=v4', 'k5=v5'] ,其中GetComponent<"ScriptName">.StartGrab()是包含ScriptName的脚本的名称。

请注意,由于您的方法具有3个参数,因此在调用它时,应该传递它们,否则会出现编译器错误。

例如:

StartGrab()

您现在正在正确调用该方法。请注意,GetComponent<"ScriptName">.StartGrab(objectToGrab, grabbedObject, objectController); objectToGrabgrabbedObject必须在调用该方法的脚本中声明,并且必须与objectController的类型等效。