Files
SpineViewer/Spine/README.md
2025-05-27 19:10:40 +08:00

84 lines
1.9 KiB
Markdown

# Spine
这个库封装了与 Spine 有关的底层功能, 下图给出主要关系.
```mermaid
classDiagram
direction TB
namespace Spine.SpineWrappers {
class ISkeleton { <<Interface>> }
class IAnimationState { <<Interface>> }
class ISpineObjectData { <<Interface>> }
class SpineObjectData {
<<Abstract>>
+CreateSkeleton() ISkeleton
+CreateAnimationState() IAnimationState
}
}
namespace Spine.Implementations.SpineWrappers.V38 {
class Skeleton38
class AnimationState38
class SpineObjectData38
}
namespace Spine {
class SpineObject {
+ISpineObjectData Data
+ISkeleton Skeleton
+IAnimationState AnimationState
+SpineObject(skelPath, atlasPath = null, version = null)
}
}
ISpineObjectData <|.. SpineObjectData
Skeleton38 <.. SpineObjectData38
AnimationState38 <.. SpineObjectData38
ISkeleton <|.. Skeleton38
IAnimationState <|.. AnimationState38
SpineObjectData <|-- SpineObjectData38
SpineObjectData38 <.. SpineObject
```
```mermaid
classDiagram
direction LR
namespace Spine.Exporters {
class BaseExporter {
<<Abstract>>
+Export(output, params spines)
}
class VideoExporter {
<<Abstract>>
+Export(output, ct, params spines)
}
class FrameExporter
class FrameSequenceExporter
class FFmpegVideoExporter
class CustomFFmpegExporter
}
BaseExporter <|-- FrameExporter
BaseExporter <|-- VideoExporter
VideoExporter <|-- FrameSequenceExporter
VideoExporter <|-- FFmpegVideoExporter
VideoExporter <|-- CustomFFmpegExporter
```
## 如何扩展渲染支持的版本
在命名空间 `Spine.Implementations.SpineWrappers` 下, 增加扩展版本的子命名空间, 例如 `V38`.
随后实现 `SpineObjectData38`, 并继承自 `Spine.SpineWrappers.SpineObjectData`.
并在实现类上使用特性注解 `[SpineImplementation(3, 8)]`.