我为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)
我该如何解决这个问题?
答案 0 :(得分:3)
GameObject.CreatePrimitive
创建带有网格渲染器,网格过滤器和对撞机的GameObject。它不会添加RigidBody。只需添加一个即可:
GameObject gameCubePhys = GameObject.CreatePrimitive(PrimitiveType.Cube);
Rigidbody cubePhys = gameCubePhys.AddComponent<Rigidbody>();