首页 文章

Unity3d在MenuItem中为对象添加RigidBody

提问于
浏览
0

我为Unity3d编写外部脚本,我有一个问题 . 这个问题是将RigidBody添加到MenuItem中的对象 . 这是我的代码:

[MenuItem("NewTool/Physics/Cube (RigidBody)", false, 10)]
static void CubePhysButton(MenuCommand menuCommand) {

    GameObject gameCubePhys = GameObject.CreatePrimitive(PrimitiveType.Cube);
    Rigidbody cubePhys = gameCubePhys.GetComponent<Rigidbody>();
    cubePhys.AddForce(1, 1, 1);
    GameObjectUtility.SetParentAndAlign(gameCubePhys, menuCommand.context as GameObject);
    Undo.RegisterCreatedObjectUndo(gameCubePhys, "Create " + gameCubePhys.name);
    Selection.activeGameObject = gameCubePhys;


}

这是Unity3d日志:

MissingComponentException:“Cube”游戏对象没有附加“Rigidbody”,但是脚本正在尝试访问它 . 您可能需要在游戏对象“Cube”中添加Rigidbody . 或者您的脚本需要在使用之前检查组件是否已连接 . UnityEngine.Rigidbody.AddForce(Vector3 force,ForceMode模式)UnityEngine.Rigidbody.AddForce(单x,单y,单z)(在C:/buildslave/unity/build/Runtime/Dynamics/ScriptBindings/Dynamics.bindings.cs: 171)CrossX.CubePhysButton(UnityEditor.MenuCommand menuCommand)(在Assets / Editor / CrossX.cs:68)

我该如何解决这个问题?

1 回答

  • 3

    GameObject.CreatePrimitive使用网格渲染器,网格滤镜和碰撞器创建一个GameObject . 它不会添加RigidBody . 只需自己添加一个:

    GameObject gameCubePhys = GameObject.CreatePrimitive(PrimitiveType.Cube);
    Rigidbody cubePhys = gameCubePhys.AddComponent<Rigidbody>();
    

相关问题