Unity3d在MenuItem中为对象添加刚体



我为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"游戏对象,但脚本正在尝试访问它。您可能需要为游戏对象"立方体"添加一个刚体。或者你的剧本在使用之前需要检查组件是否已连接。UnityEngine.Rigidbody.AddForce(矢量3力,力模式(UnityEngine.Rigidbody.AddForce(单x、单y、单z((在C:/buildslave/unity/build/Runtime/Dynamics/ScriptBindings/Dynamics.bindings.cs:171(CrossX.CubePhysButton(UnityEditor.MenuCommand菜单命令((位于Assets/Editor/CrossX.cs:68(

如何解决此问题?

GameObject.CreatePrimitive使用网格渲染器、网格过滤器和碰撞器创建游戏对象。它不添加刚体。只需自己添加一个:

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

最新更新