C# Unity3d向菜单项中的对象添加刚体

C# Unity3d向菜单项中的对象添加刚体,c#,unity3d,C#,Unity3d,我为Unity3d编写外部脚本,我有一个问题。此问题是将刚体添加到MenuItem中的对象。这是我的密码: [MenuItem("NewTool/Physics/Cube (RigidBody)", false, 10)] static void CubePhysButton(MenuCommand menuCommand) { GameObject gameCubePhys = GameObject.CreatePrimitive(PrimitiveType.Cube); R

我为Unity3d编写外部脚本,我有一个问题。此问题是将刚体添加到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;


}
[MenuItem(“NewTool/Physics/Cube(刚体)”,false,10]
静态void立方体按钮(菜单命令和菜单命令){
GameObject gameCubePhys=GameObject.CreatePrimitive(PrimitiveType.Cube);
Rigidbody cubePhys=gameCubePhys.GetComponent();
库伯菲斯.阿德福斯(1,1,1);
GameObjectUtility.SetParentAndAlign(gameCubePhys、menuCommand.context作为GameObject);
Undo.RegisterCreatedObjectUndo(gameCubePhys,“创建”+gameCubePhys.name);
Selection.activeGameObject=gameCubePhys;
}
以下是Unity3d日志:

缺少组件异常:没有“刚体”附加到 “立方体”游戏对象,但脚本正在尝试访问它。你可能 需要向游戏对象“立方体”添加刚体。还是你的剧本 使用前需要检查组件是否已连接。 UnityEngine.Rigidbody.AddForce(矢量3力,力模式) UnityEngine.Rigidbody.AddForce(单x、单y、单z)(在 C:/buildslave/unity/build/Runtime/Dynamics/ScriptBindings/Dynamics.bindings.cs:171) CrossX.CubePhysButton(UnityEdit.MenuCommand和MenuCommand)(位于 Assets/Editor/CrossX.cs:68)

如何解决此问题?

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

GameObject gameCubePhys = GameObject.CreatePrimitive(PrimitiveType.Cube);
Rigidbody cubePhys = gameCubePhys.AddComponent<Rigidbody>();
GameObject gameCubePhys=GameObject.CreatePrimitive(PrimitiveType.Cube);
Rigidbody cubePhys=gameCubePhys.AddComponent();
使用网格渲染器、网格过滤器和碰撞器创建游戏对象。它没有添加刚体。只需自己添加一个:

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

如果您对日志中的问题来源感兴趣:在代码中,您使用了GetComponent()而不是AddComponent()。这意味着您正试图检索一些不存在的内容,正如日志所指出的:)另外,让我将您的注意力引向gamedev.stackexchange.com,那里的用户更倾向于回答这类问题(并不是堆栈溢出是错误的地方,只是game dev网站更好)。如果您对日志中的问题源感兴趣:在代码中,您使用了GetComponent()而不是AddComponent()。这意味着您正试图检索一些不存在的内容,正如日志所指出的:)另外,让我将您的注意力引向gamedev.stackexchange.com,那里的用户更倾向于回答这类问题(不是堆栈溢出是错误的地方,只是game dev网站更好)。