Search Unity

Question After SkinnedMesh Component's sharedmesh, animator can't find bones at once. i also assign new bones

Discussion in 'Animation' started by kfs0502, Apr 18, 2023.

  1. kfs0502

    kfs0502

    Joined:
    Oct 18, 2022
    Posts:
    2
    1. SkinnedMeshRenderer skinnedMesh;
    2. Animator animator;
    3. SkinnedMeshRenderer protoTypeSkinnedMesh;
    4. Animator protoTypeAnimator;
    5. Transform[] bones;
    6. GameObject bonesObject;
    7. Transform rootBone;
    8. animator = obj.GetComponent<Animator>();
    9. skinnedMesh = obj.GetComponent<SkinnedMeshRenderer>();
    10. protoTypeSkinnedMesh = skinMeshList[id];
    11. skinnedMesh.sharedMesh = protoTypeSkinnedMesh.sharedMesh;
    12. skinnedMesh.sharedMaterial = protoTypeSkinnedMesh.sharedMaterial;
    13. protoTypeAnimator = animators[id];
    14. animator.runtimeAnimatorController = protoTypeAnimator.runtimeAnimatorController;
    15. animator.avatar = protoTypeAnimator.avatar;
    16. Destroy(obj.transform.GetChild(0).gameObject); //hips, for bones
    17. bonesObject = Instantiate(bonesObjs[id]);
    18. bones = bonesObject.transform.GetComponentsInChildren<Transform>();
    19. bonesObject.transform.SetParent(obj.transform);
    20. rootBone = bonesObject.GetComponent<Transform>();
    21. skinnedMesh.bones = bones;
    22. skinnedMesh.rootBone = rootBone;
    after run this code, the object's Animator Component show warnings Transform 'Head' has been deleted Transform 'Hand_L' has been deleted Transform 'Head_R' has been deleted .......

    but these are the bones before they change. i do 'skinnedMesh.bones = bones;' And during runtime, if I change something in the Animator component in the inspector window, warning goes away and it works as I intended.

    i was try animator.Rebind() but it is still..

    unity version is 2020.3.38f1