浏览代码

[godot] Fix examples/export/runtime.sh for godot, fix MeshAttachment, fix Godot example

Mario Zechner 3 年之前
父节点
当前提交
437f88922d

+ 1 - 0
.gitignore

@@ -168,3 +168,4 @@ spine-godot/godot
 spine-godot/spine_godot/__pycache__
 spine-godot/spine_godot/spine-cpp
 spine-godot/godot-copy
+spine-godot/example/.import

+ 8 - 25
examples/export/runtimes.sh

@@ -85,31 +85,14 @@ cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-cocos2dx/examp
 cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-cocos2dx/example/Resources/common/"
 cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-cocos2dx/example/Resources/common/"
 
-rm "$ROOT/spine-cocos2dx/example-v4/Resources/common/"*
-
-cp -f ../coin/export/coin-pro.skel "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../coin/export/coin.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../coin/export/coin.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-
-cp -f ../goblins/export/goblins-pro.json "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../goblins/export/goblins.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../goblins/export/goblins.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-
-cp -f ../raptor/export/raptor-pro.json "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../raptor/export/raptor.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../raptor/export/raptor.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-
-cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../spineboy/export/spineboy.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-
-cp -f ../tank/export/tank-pro.skel "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../tank/export/tank.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../tank/export/tank.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-
-cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
-cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-cocos2dx/example-v4/Resources/common/"
+echo "spine-godot"
+rm "$ROOT"/spine-godot/example/spineboy/*.atlas
+rm "$ROOT"/spine-godot/example/spineboy/*.json
+rm "$ROOT"/spine-godot/example/spineboy/*.skel
+cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-godot/example/spineboy/"
+cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-godot/example/spineboy/"
+cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-godot/example/spineboy/"
+cp -f ../spineboy/export/spineboy.png "$ROOT/spine-godot/example/spineboy/"
 
 echo "spine-sfml-c"
 rm "$ROOT/spine-sfml/c/data/"*

+ 2 - 0
spine-cpp/spine-cpp/include/spine/MeshAttachment.h

@@ -53,6 +53,8 @@ namespace spine {
 
 		virtual ~MeshAttachment();
 
+		using VertexAttachment::computeWorldVertices;
+
 		virtual void computeWorldVertices(Slot &slot, size_t start, size_t count, float *worldVertices, size_t offset,
 		size_t stride = 2);
 

+ 4 - 0
spine-godot/example/Spineboy.gd

@@ -0,0 +1,4 @@
+extends SpineSprite
+
+func _ready():
+	get_animation_state().set_animation("walk", true, 0);

+ 1 - 0
spine-godot/example/icon.png.import

@@ -28,6 +28,7 @@ process/fix_alpha_border=true
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/invert_color=false
+process/normal_map_invert_y=false
 stream=false
 size_limit=0
 detect_3d=true

+ 6 - 11
spine-godot/example/spineboy.tscn

@@ -1,20 +1,15 @@
-[gd_scene load_steps=5 format=2]
+[gd_scene load_steps=4 format=2]
 
-[ext_resource path="res://spineboy/spineboy-pro.json" type="SpineSkeletonJsonDataResource" id=1]
-[ext_resource path="res://spineboy/spineboy.atlas" type="SpineAtlasResource" id=2]
-
-[sub_resource type="SpineSkeletonDataResource" id=1]
-atlas_res = ExtResource( 2 )
-skeleton_json_res = ExtResource( 1 )
-animations = null
-skins = null
+[ext_resource path="res://Spineboy.gd" type="Script" id=1]
+[ext_resource path="res://spineboy/spineboy-data.tres" type="SpineSkeletonDataResource" id=2]
 
 [sub_resource type="SpineAnimationStateDataResource" id=2]
-skeleton = SubResource( 1 )
+skeleton = ExtResource( 2 )
 
 [node name="Node2D" type="Node2D"]
 
-[node name="SpineSprite" type="SpineSprite" parent="."]
+[node name="Spineboy" type="SpineSprite" parent="."]
 position = Vector2( 504, 622 )
 animation_state_data_res = SubResource( 2 )
 current_animations = [ "walk" ]
+script = ExtResource( 1 )

+ 10 - 0
spine-godot/example/spineboy/spineboy-data.tres

@@ -0,0 +1,10 @@
+[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=2]
+
+[ext_resource path="res://spineboy/spineboy.atlas" type="SpineAtlasResource" id=1]
+[ext_resource path="res://spineboy/spineboy-pro.json" type="SpineSkeletonJsonDataResource" id=2]
+
+[resource]
+atlas_res = ExtResource( 1 )
+skeleton_json_res = ExtResource( 2 )
+animations = null
+skins = null

+ 78 - 70
spine-godot/example/spineboy/spineboy-pro.json

@@ -1,7 +1,7 @@
 {
 "skeleton": {
-	"hash": "IQgkYFQG8ng",
-	"spine": "4.0.31",
+	"hash": "itfFESDjM1c",
+	"spine": "4.1.23-beta",
 	"x": -188.63,
 	"y": -7.94,
 	"width": 418.45,
@@ -2427,19 +2427,19 @@
 			"side-glow1": {
 				"attachment": [
 					{ "name": "hoverglow-small" },
-					{ "time": 0.9667, "name": null }
+					{ "time": 0.9667 }
 				]
 			},
 			"side-glow2": {
 				"attachment": [
 					{ "time": 0.0667, "name": "hoverglow-small" },
-					{ "time": 1, "name": null }
+					{ "time": 1 }
 				]
 			},
 			"side-glow3": {
 				"attachment": [
 					{ "name": "hoverglow-small" },
-					{ "time": 0.9667, "name": null }
+					{ "time": 0.9667 }
 				]
 			}
 		},
@@ -3479,60 +3479,68 @@
 				{ "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
 			]
 		},
-		"deform": {
+		"attachments": {
 			"default": {
 				"front-foot": {
-					"front-foot": [
-						{
-							"offset": 26,
-							"vertices": [ -0.02832, -5.37024, -0.02832, -5.37024, 3.8188, -3.7757, -0.02832, -5.37024, -3.82159, 3.77847 ]
-						}
-					]
+					"front-foot": {
+						"deform": [
+							{
+								"offset": 26,
+								"vertices": [ -0.02832, -5.37024, -0.02832, -5.37024, 3.8188, -3.7757, -0.02832, -5.37024, -3.82159, 3.77847 ]
+							}
+						]
+					}
 				},
 				"front-shin": {
-					"front-shin": [
-						{
-							"offset": 14,
-							"vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ]
-						},
-						{
-							"time": 0.3667,
-							"offset": 14,
-							"vertices": [ 0.5298, -1.12677, -11.66571, -9.07211, -25.65866, -17.53735, -25.53217, -16.50978, -11.78232, -11.26097, 0, 0, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -2.64522, -7.35739, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -10.06873, -12.0999 ]
-						},
-						{
-							"time": 0.5333,
-							"offset": 14,
-							"vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -7.00775, -8.24771, -6.45482, -6.49312, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ]
-						},
-						{
-							"time": 1,
-							"offset": 14,
-							"vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ]
-						}
-					]
+					"front-shin": {
+						"deform": [
+							{
+								"offset": 14,
+								"vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ]
+							},
+							{
+								"time": 0.3667,
+								"offset": 14,
+								"vertices": [ 0.5298, -1.12677, -11.66571, -9.07211, -25.65866, -17.53735, -25.53217, -16.50978, -11.78232, -11.26097, 0, 0, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -2.64522, -7.35739, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -10.06873, -12.0999 ]
+							},
+							{
+								"time": 0.5333,
+								"offset": 14,
+								"vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -7.00775, -8.24771, -6.45482, -6.49312, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ]
+							},
+							{
+								"time": 1,
+								"offset": 14,
+								"vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ]
+							}
+						]
+					}
 				},
 				"hoverboard-board": {
-					"hoverboard-board": [
-						{
-							"curve": [ 0.067, 0, 0.2, 1 ]
-						},
-						{
-							"time": 0.2667,
-							"offset": 1,
-							"vertices": [ 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 3.55673, -3.0E-4, 3.55673, -3.0E-4, 0, 0, 0, 0, 0, 0, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, 0, 0, 0, 0, 0, 0, 0, 0, -4.90558, 0.11214, -9.40706, 6.2E-4, -6.34871, 4.3E-4, -6.34925, -6.57018, -6.34925, -6.57018, -6.34871, 4.3E-4, -2.3308, 1.7E-4, -2.33133, -6.57045, -2.33133, -6.57045, -2.3308, 1.7E-4, 0, 0, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 3.3297, 4.44005, 3.3297, 4.44005, 3.3297, 4.44005, 1.2E-4, 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, 1.2E-4, 2.45856, 1.2E-4, 2.45856, -9.40694, 2.45918, 1.88063, 0.44197, -2.9E-4, -3.54808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.46227, 1.7E-4, 0, 0, 0, 0, 1.2E-4, 2.45856 ],
-							"curve": [ 0.45, 0, 0.817, 1 ]
-						},
-						{ "time": 1 }
-					]
+					"hoverboard-board": {
+						"deform": [
+							{
+								"curve": [ 0.067, 0, 0.2, 1 ]
+							},
+							{
+								"time": 0.2667,
+								"offset": 1,
+								"vertices": [ 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 3.55673, -3.0E-4, 3.55673, -3.0E-4, 0, 0, 0, 0, 0, 0, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, 0, 0, 0, 0, 0, 0, 0, 0, -4.90558, 0.11214, -9.40706, 6.2E-4, -6.34871, 4.3E-4, -6.34925, -6.57018, -6.34925, -6.57018, -6.34871, 4.3E-4, -2.3308, 1.7E-4, -2.33133, -6.57045, -2.33133, -6.57045, -2.3308, 1.7E-4, 0, 0, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 3.3297, 4.44005, 3.3297, 4.44005, 3.3297, 4.44005, 1.2E-4, 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, 1.2E-4, 2.45856, 1.2E-4, 2.45856, -9.40694, 2.45918, 1.88063, 0.44197, -2.9E-4, -3.54808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.46227, 1.7E-4, 0, 0, 0, 0, 1.2E-4, 2.45856 ],
+								"curve": [ 0.45, 0, 0.817, 1 ]
+							},
+							{ "time": 1 }
+						]
+					}
 				},
 				"rear-foot": {
-					"rear-foot": [
-						{
-							"offset": 28,
-							"vertices": [ -1.93078, 1.34782, -0.31417, 2.33363, 3.05122, 0.33946, 2.31472, -2.01678, 2.17583, -2.05795, -0.04277, -2.99459, 1.15429, 0.26328, 0.97501, -0.67169 ]
-						}
-					]
+					"rear-foot": {
+						"deform": [
+							{
+								"offset": 28,
+								"vertices": [ -1.93078, 1.34782, -0.31417, 2.33363, 3.05122, 0.33946, 2.31472, -2.01678, 2.17583, -2.05795, -0.04277, -2.99459, 1.15429, 0.26328, 0.97501, -0.67169 ]
+							}
+						]
+					}
 				}
 			}
 		}
@@ -5203,7 +5211,7 @@
 			"portal-bg": {
 				"attachment": [
 					{ "name": "portal-bg" },
-					{ "time": 3, "name": null }
+					{ "time": 3 }
 				]
 			},
 			"portal-flare1": {
@@ -5214,7 +5222,7 @@
 					{ "time": 1.2, "name": "portal-flare1" },
 					{ "time": 1.2333, "name": "portal-flare2" },
 					{ "time": 1.2667, "name": "portal-flare1" },
-					{ "time": 1.3333, "name": null }
+					{ "time": 1.3333 }
 				]
 			},
 			"portal-flare2": {
@@ -5224,14 +5232,14 @@
 					{ "time": 1.1667, "name": "portal-flare1" },
 					{ "time": 1.2, "name": "portal-flare2" },
 					{ "time": 1.2333, "name": "portal-flare3" },
-					{ "time": 1.2667, "name": null }
+					{ "time": 1.2667 }
 				]
 			},
 			"portal-flare3": {
 				"attachment": [
 					{ "time": 1.2, "name": "portal-flare3" },
 					{ "time": 1.2333, "name": "portal-flare2" },
-					{ "time": 1.2667, "name": null }
+					{ "time": 1.2667 }
 				]
 			},
 			"portal-flare4": {
@@ -5239,33 +5247,33 @@
 					{ "time": 1.2, "name": "portal-flare2" },
 					{ "time": 1.2333, "name": "portal-flare1" },
 					{ "time": 1.2667, "name": "portal-flare2" },
-					{ "time": 1.3333, "name": null }
+					{ "time": 1.3333 }
 				]
 			},
 			"portal-flare5": {
 				"attachment": [
 					{ "time": 1.2333, "name": "portal-flare3" },
 					{ "time": 1.2667, "name": "portal-flare1" },
-					{ "time": 1.3333, "name": null }
+					{ "time": 1.3333 }
 				]
 			},
 			"portal-flare6": {
 				"attachment": [
 					{ "time": 1.2667, "name": "portal-flare3" },
-					{ "time": 1.3333, "name": null }
+					{ "time": 1.3333 }
 				]
 			},
 			"portal-flare7": {
 				"attachment": [
 					{ "time": 1.1333, "name": "portal-flare2" },
-					{ "time": 1.1667, "name": null }
+					{ "time": 1.1667 }
 				]
 			},
 			"portal-flare8": {
 				"attachment": [
 					{ "time": 1.2, "name": "portal-flare3" },
 					{ "time": 1.2333, "name": "portal-flare2" },
-					{ "time": 1.2667, "name": null }
+					{ "time": 1.2667 }
 				]
 			},
 			"portal-flare9": {
@@ -5273,7 +5281,7 @@
 					{ "time": 1.2, "name": "portal-flare2" },
 					{ "time": 1.2333, "name": "portal-flare3" },
 					{ "time": 1.2667, "name": "portal-flare1" },
-					{ "time": 1.3, "name": null }
+					{ "time": 1.3 }
 				]
 			},
 			"portal-flare10": {
@@ -5281,25 +5289,25 @@
 					{ "time": 1.2, "name": "portal-flare2" },
 					{ "time": 1.2333, "name": "portal-flare1" },
 					{ "time": 1.2667, "name": "portal-flare3" },
-					{ "time": 1.3, "name": null }
+					{ "time": 1.3 }
 				]
 			},
 			"portal-shade": {
 				"attachment": [
 					{ "name": "portal-shade" },
-					{ "time": 3, "name": null }
+					{ "time": 3 }
 				]
 			},
 			"portal-streaks1": {
 				"attachment": [
 					{ "name": "portal-streaks1" },
-					{ "time": 3, "name": null }
+					{ "time": 3 }
 				]
 			},
 			"portal-streaks2": {
 				"attachment": [
 					{ "name": "portal-streaks2" },
-					{ "time": 3, "name": null }
+					{ "time": 3 }
 				]
 			}
 		},
@@ -7696,7 +7704,7 @@
 					{ "time": 0.1, "name": "muzzle03" },
 					{ "time": 0.1333, "name": "muzzle04" },
 					{ "time": 0.1667, "name": "muzzle05" },
-					{ "time": 0.2, "name": null }
+					{ "time": 0.2 }
 				]
 			},
 			"muzzle-glow": {
@@ -7725,7 +7733,7 @@
 				],
 				"attachment": [
 					{ "time": 0.0333, "name": "muzzle-ring" },
-					{ "time": 0.2333, "name": null }
+					{ "time": 0.2333 }
 				]
 			},
 			"muzzle-ring2": {
@@ -7739,7 +7747,7 @@
 				],
 				"attachment": [
 					{ "time": 0.0333, "name": "muzzle-ring" },
-					{ "time": 0.2, "name": null }
+					{ "time": 0.2 }
 				]
 			},
 			"muzzle-ring3": {
@@ -7753,7 +7761,7 @@
 				],
 				"attachment": [
 					{ "time": 0.0333, "name": "muzzle-ring" },
-					{ "time": 0.2, "name": null }
+					{ "time": 0.2 }
 				]
 			},
 			"muzzle-ring4": {
@@ -7767,7 +7775,7 @@
 				],
 				"attachment": [
 					{ "time": 0.0333, "name": "muzzle-ring" },
-					{ "time": 0.2, "name": null }
+					{ "time": 0.2 }
 				]
 			}
 		},

二进制
spine-godot/example/spineboy/spineboy-pro.skel


二进制
spine-godot/example/spineboy/spineboy.png


+ 1 - 0
spine-godot/example/spineboy/spineboy.png.import

@@ -28,6 +28,7 @@ process/fix_alpha_border=true
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/invert_color=false
+process/normal_map_invert_y=false
 stream=false
 size_limit=0
 detect_3d=true

+ 1 - 4
spine-godot/godot/modules/spine_godot/SpineSprite.cpp

@@ -412,10 +412,7 @@ void SpineSprite::update_mesh_from_skeleton(Ref<SpineSkeleton> s) {
 			v_num = mesh->getWorldVerticesLength() / VERTEX_STRIDE;
 			vertices.setSize(mesh->getWorldVerticesLength(), 0);
 
-			mesh->computeWorldVertices(*slot, 0, mesh->getWorldVerticesLength(), vertices, 0);
-
-			//			uvs = mesh->getUVs();
-			//			indices = mesh->getTriangles();
+			mesh->computeWorldVertices(*slot, vertices);
 			TEMP_COPY(uvs, mesh->getUVs());
 			TEMP_COPY(indices, mesh->getTriangles());