【问题标题】:How to change the child character model in unity editor如何在unity editor中更改子角色模型
【发布时间】:2023-02-07 23:53:10
【问题描述】:

我有一个角色创建者脚本,它创建了一个角色模型作为孩子的玩家游戏对象

public class CreatePlayer : MonoBehaviour
{
   [MenuItem("GameObject/Create Player", false, 10)]
    
    static void Create()
    {
        GameObject player = new GameObject("Hero");
        player.tag = "Player";
        GameObject character = Instantiate((GameObject)Resources.Load("SampleCharacter")); // Instantiate the 3D model
        character.transform.parent = player.transform;
        CharacterController cc = player.AddComponent<CharacterController>();
        cc.center = new Vector3(0f, 0.9f, 0f);
        cc.radius = 0.2f;
        cc.height = 1.9f;
        player.AddComponent<PlayerMovement>();
        Animator animator = character.AddComponent<Animator>();
        animator.runtimeAnimatorController = (RuntimeAnimatorController)Resources.Load("Animations/PlayerAnimation");
        player.AddComponent<PlayerAnimations>();
        player.AddComponent<PlayerHealth>();
        Camera.main.gameObject.AddComponent<CameraController>();
        Camera.main.GetComponent<CameraController>().followTarget = player.transform;
    }
    
}

我需要的是能够在编辑器中创建角色后通过拖放角色预制件随时更改角色模型。这也应该将动画师和动画控制器应用于添加的新预制件。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    你有两个选择。

    1. 完全销毁角色(使用 Destroy(GameObject) 函数)并在切换时加载一个新角色作为孩子。
    2. 调用 GetComponentInChildren<T>() 获取 MeshRenderer 和 Animator 组件并换出必要的属性(共享网格控制器分别)手动。那个可能有点棘手并且有一些错误需要解决。如果您使用蒙皮网格,您可能还需要销毁并加载整个骨架,并在新骨架上连接必要的参考。

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      相关资源
      最近更新 更多