여기서bone.Data.OffsetX
를 수정하고 있습니다. 이름에 'data'가있는 모든 것은 단일 인스턴스의 매개 변수가 아닌 공유 스켈레톤 데이터에 액세스합니다. 따라서 귀하의 경우에는bone.Data.OffsetX
를 설정하지 말고 대신bone.X
를 설정하여 로컬 뼈 X 오프셋을 조정하십시오.
기본 디자인과 API 사용 방법을 이해하려면 여기에서 '데이터 개체'및 '인스턴스 개체'에 대한 문서를 참조하세요.
Runtime Architecture - Spine Runtimes Guide: Data objects
Update ()
에서 본 위치 수정에 관하여 :
애니메이션 중 하나라도bone.X
오프셋을 수정하는 경우 여기에 설명 된대로SkeletonAnimation.UpdateLocal
콜백 델리게이트를 사용해야합니다.
spine-unity Runtime Documentation: Life cycle
// 업데이트 본 위치 델리게이트 메서드
void AdjustLocalBoneLocations (ISkeletonAnimation anim) {
// 로컬 애니메이션 업데이트가 완료된 후에 호출됩니다.
bone.X = ..;
}
// 델리게이트 메소드 등록
void Start () {
skeletonAnimation.UpdateLocal-= AdjustLocalBoneLocations;
skeletonAnimation.UpdateLocal + = AdjustLocalBoneLocations;
}
You are modifying bone.Data.OffsetX
here. Anything with data
in its name is accessing shared skeleton data, not a single instance's parameters. So for your case, don't set bone.Data.OffsetX
but instead set bone.X
to adjust local bone X offset.
Please see the documentation about Data objects
and Instance objects
here to understand the basic design and how the API shall be used:
Runtime Architecture - Spine Runtimes Guide: Data objects
Regarding modifying bone location in Update()
:
If any of your animations are also modifying the bone.X
offset, you need to use the SkeletonAnimation.UpdateLocal
callback delegate as described here:
spine-unity Runtime Documentation: Life cycle
// your update bone location delegate method
void AdjustLocalBoneLocations (ISkeletonAnimation anim) {
// this is called after local animation updates have been completed.
bone.X = ..;
}
// register your delegate method
void Start() {
skeletonAnimation.UpdateLocal -= AdjustLocalBoneLocations;
skeletonAnimation.UpdateLocal += AdjustLocalBoneLocations;
}