diff --git a/CHANGELOG.md b/CHANGELOG.md
index 68c6a37..48fb1cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# CHANGELOG
+## v0.12.17
+
+- 动画边界检测的帧率提高到100帧每秒
+
+## v0.12.16
+
+- 导出多个时允许自动时长
+
## v0.12.15
- 修复附件类型枚举量字符串大小写问题
diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs
index d71db25..4860482 100644
--- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs
+++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs
@@ -222,10 +222,10 @@ namespace SpineViewer.Spine.Implementations.SpineObject
tmpSkeleton.Update(0);
tmpSkeleton.UpdateWorldTransform();
- // 按 10 帧每秒计算边框
+ // 按 100 帧每秒计算边框
var bounds = getCurrentBounds();
float[] _ = [];
- for (float tick = 0, delta = 0.1f; tick < maxDuration; tick += delta)
+ for (float tick = 0, delta = 0.01f; tick < maxDuration; tick += delta)
{
tmpSkeleton.GetBounds(out var x, out var y, out var w, out var h);
bounds = bounds.Union(new(x, y, w, h));
diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs
index 25e7d1b..3379d57 100644
--- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs
+++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs
@@ -222,10 +222,10 @@ namespace SpineViewer.Spine.Implementations.SpineObject
tmpSkeleton.Update(0);
tmpSkeleton.UpdateWorldTransform();
- // 按 10 帧每秒计算边框
+ // 按 100 帧每秒计算边框
var bounds = getCurrentBounds();
float[] _ = [];
- for (float tick = 0, delta = 0.1f; tick < maxDuration; tick += delta)
+ for (float tick = 0, delta = 0.01f; tick < maxDuration; tick += delta)
{
tmpSkeleton.GetBounds(out var x, out var y, out var w, out var h, ref _);
bounds = bounds.Union(new(x, y, w, h));
diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs
index 063ec29..70b63a1 100644
--- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs
+++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs
@@ -219,10 +219,10 @@ namespace SpineViewer.Spine.Implementations.SpineObject
tmpSkeleton.Update(0);
tmpSkeleton.UpdateWorldTransform();
- // 按 10 帧每秒计算边框
+ // 按 100 帧每秒计算边框
var bounds = getCurrentBounds();
float[] _ = [];
- for (float tick = 0, delta = 0.1f; tick < maxDuration; tick += delta)
+ for (float tick = 0, delta = 0.01f; tick < maxDuration; tick += delta)
{
tmpSkeleton.GetBounds(out var x, out var y, out var w, out var h, ref _);
bounds = bounds.Union(new(x, y, w, h));
diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs
index 72470ff..d07bc09 100644
--- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs
+++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs
@@ -217,10 +217,10 @@ namespace SpineViewer.Spine.Implementations.SpineObject
tmpSkeleton.Update(0);
tmpSkeleton.UpdateWorldTransform();
- // 按 10 帧每秒计算边框
+ // 按 100 帧每秒计算边框
var bounds = getCurrentBounds();
float[] _ = [];
- for (float tick = 0, delta = 0.1f; tick < maxDuration; tick += delta)
+ for (float tick = 0, delta = 0.01f; tick < maxDuration; tick += delta)
{
tmpSkeleton.GetBounds(out var x, out var y, out var w, out var h, ref _);
bounds = bounds.Union(new(x, y, w, h));
diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs
index 47f3a7f..8bd3e92 100644
--- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs
+++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs
@@ -216,10 +216,10 @@ namespace SpineViewer.Spine.Implementations.SpineObject
tmpSkeleton.Update(0);
tmpSkeleton.UpdateWorldTransform();
- // 按 10 帧每秒计算边框
+ // 按 100 帧每秒计算边框
var bounds = getCurrentBounds();
float[] _ = [];
- for (float tick = 0, delta = 0.1f; tick < maxDuration; tick += delta)
+ for (float tick = 0, delta = 0.01f; tick < maxDuration; tick += delta)
{
tmpSkeleton.GetBounds(out var x, out var y, out var w, out var h, ref _);
bounds = bounds.Union(new(x, y, w, h));
diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs
index 6378e91..d3907f5 100644
--- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs
+++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs
@@ -216,10 +216,10 @@ namespace SpineViewer.Spine.Implementations.SpineObject
//tmpSkeleton.Update(0);
tmpSkeleton.UpdateWorldTransform();
- // 按 10 帧每秒计算边框
+ // 按 100 帧每秒计算边框
var bounds = getCurrentBounds();
float[] _ = [];
- for (float tick = 0, delta = 0.1f; tick < maxDuration; tick += delta)
+ for (float tick = 0, delta = 0.01f; tick < maxDuration; tick += delta)
{
tmpSkeleton.GetBounds(out var x, out var y, out var w, out var h, ref _);
bounds = bounds.Union(new(x, y, w, h));
diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs
index 7af42fd..c4b535d 100644
--- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs
+++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs
@@ -216,10 +216,10 @@ namespace SpineViewer.Spine.Implementations.SpineObject
tmpSkeleton.Update(0);
tmpSkeleton.UpdateWorldTransform(Skeleton.Physics.Update);
- // 按 10 帧每秒计算边框
+ // 按 100 帧每秒计算边框
var bounds = getCurrentBounds();
float[] _ = [];
- for (float tick = 0, delta = 0.1f; tick < maxDuration; tick += delta)
+ for (float tick = 0, delta = 0.01f; tick < maxDuration; tick += delta)
{
tmpSkeleton.GetBounds(out var x, out var y, out var w, out var h, ref _);
bounds = bounds.Union(new(x, y, w, h));
diff --git a/SpineViewer/SpineViewer.csproj b/SpineViewer/SpineViewer.csproj
index 2236b29..04ed0fd 100644
--- a/SpineViewer/SpineViewer.csproj
+++ b/SpineViewer/SpineViewer.csproj
@@ -7,7 +7,7 @@
net8.0-windows
$(SolutionDir)out
false
- 0.12.16
+ 0.12.17
WinExe
true
appicon.ico