Unity3d向菜单项中的对象添加RigidBody

时间:2018-07-31 19:51:14

标签: c# unity3d

我为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:没有“刚性体”附加到   “多维数据集”游戏对象,但是脚本正在尝试访问它。你可能   需要向游戏对象“立方体”添加一个刚体。或者你的剧本   需要在使用组件之前检查组件是否已连接。   UnityEngine.Rigidbody.AddForce(Vector3强制,ForceMode模式)   UnityEngine.Rigidbody.AddForce(单x,单y,单z)(在   C:/buildslave/unity/build/Runtime/Dynamics/ScriptBindings/Dynamics.bindings.cs:171)   CrossX.CubePhysButton(UnityEditor.MenuCommand menuCommand)(在   素材资源/编辑器/CrossX.cs:68)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

GameObject.CreatePrimitive创建带有网格渲染器,网格过滤器和对撞机的GameObject。它不会添加RigidBody。只需添加一个即可:

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