Compare commits

...

422 Commits

Author SHA1 Message Date
puxuan
71f4564255 . 2025-09-02 20:49:34 +08:00
puxuan
3a6e7f9a7c Merge remote-tracking branch 'origin/dev_hero' into dev_android 2025-09-02 20:47:05 +08:00
puxuan
fcb5091001 特效 2025-09-02 20:45:18 +08:00
tuxinyu
aac1a5d5ad 11111 2025-09-02 20:42:18 +08:00
tuxinyu
d3c630ec8e 1111111 2025-09-02 20:39:37 +08:00
tuxinyu
fb70f96ed3 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-09-02 19:36:42 +08:00
tuxinyu
7a4a8b8f8c 111111 2025-09-02 19:36:31 +08:00
puxuan
be828e96cf lua 2025-09-02 17:31:15 +08:00
puxuan
77fc58e672 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-09-02 17:30:41 +08:00
puxuan
104a6d1bf5 场景 2025-09-02 17:30:35 +08:00
puxuan
748d55bab5 . 2025-09-02 17:29:17 +08:00
changyuxiang
dd09e4228b 1 2025-09-01 21:29:20 +08:00
tuxinyu
8515c13f92 111111 2025-09-01 20:45:41 +08:00
tuxinyu
efc5900332 111 2025-09-01 20:34:23 +08:00
tuxinyu
9a880a3cce 11111111 2025-09-01 20:33:16 +08:00
tuxinyu
22d3603f19 11111111111 2025-09-01 20:14:58 +08:00
puxuan
448becfe4b . 2025-09-01 19:59:18 +08:00
tuxinyu
c01ed07ef7 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-09-01 19:44:55 +08:00
tuxinyu
3d3d774273 11111111 2025-09-01 19:44:47 +08:00
puxuan
5c7be3141e res 2025-09-01 19:39:14 +08:00
puxuan
8a50d3a5a1 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-09-01 19:35:01 +08:00
puxuan
a525866905 建筑 2025-09-01 19:34:53 +08:00
tuxinyu
b2a21397d8 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-09-01 19:26:42 +08:00
tuxinyu
d05efd7327 11111111 2025-09-01 19:26:33 +08:00
puxuan
45835b8706 Merge branch 'dev_hero' into dev_android 2025-09-01 16:56:29 +08:00
puxuan
2ccda92192 .. 2025-09-01 15:05:58 +08:00
puxuan
110bc8ba88 2025-09-01 15:00:38 +08:00
changyuxiang
e9244a90d1 1 2025-09-01 12:30:30 +08:00
tuxinyu
a25afdb9dd Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-09-01 12:13:01 +08:00
tuxinyu
4bfc954ae4 111111 2025-09-01 12:12:06 +08:00
puxuan
953112ed88 Merge branch 'dev_hero' into dev_android 2025-09-01 11:39:06 +08:00
puxuan
43a4a54ea6 广告 2025-09-01 11:28:45 +08:00
puxuan
4fd0f4a6d0 屏蔽上报 2025-09-01 11:25:36 +08:00
puxuan
418d5780bf 场景5 2025-09-01 10:30:25 +08:00
puxuan
2df5ba26fd config 2025-09-01 09:44:54 +08:00
puxuan
98cc05b3cc fix bug 2025-08-29 17:23:14 +08:00
puxuan
65e9cee902 卡牌召唤 2025-08-29 16:21:17 +08:00
puxuan
008fc9eddf 技能弹窗 2025-08-29 14:40:01 +08:00
puxuan
49f697de6e 技能描述 2025-08-29 14:25:56 +08:00
puxuan
ef470b60db 场景3 4 2025-08-29 11:58:09 +08:00
puxuan
079c1b21f6 挂机 2025-08-28 20:57:42 +08:00
puxuan
6488cf581a fix bug 2025-08-28 20:52:01 +08:00
puxuan
10e8dbb255 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-28 20:30:29 +08:00
puxuan
cd70a96e95 天赋 2025-08-28 20:30:25 +08:00
changyuxiang
7a4275a1c9 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-28 20:26:22 +08:00
changyuxiang
f154548f34 场景4 2025-08-28 20:26:15 +08:00
tuxinyu
4cf4604a70 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-28 20:04:15 +08:00
tuxinyu
fc9122f77f 111111 2025-08-28 20:04:05 +08:00
changyuxiang
d193c93fd0 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-28 20:00:06 +08:00
changyuxiang
0e339930f0 1 2025-08-28 20:00:00 +08:00
puxuan
4fbafb72c8 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-28 19:52:38 +08:00
puxuan
8cb98ac1c9 fix bug 2025-08-28 19:52:35 +08:00
tuxinyu
07e5f3b31f Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-28 19:43:46 +08:00
tuxinyu
d46cea8ec3 1111 2025-08-28 19:43:38 +08:00
puxuan
287f858230 连击 2025-08-28 17:42:10 +08:00
puxuan
fa1198dd00 连击 2025-08-28 17:40:06 +08:00
puxuan
e9244b18c4 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-28 16:37:18 +08:00
puxuan
bbcb866671 fix bug 2025-08-28 16:37:15 +08:00
changyuxiang
7998dee76a 1 2025-08-28 14:46:21 +08:00
puxuan
028fc1d88a . 2025-08-28 11:44:40 +08:00
puxuan
2301851088 res 2025-08-28 11:17:09 +08:00
puxuan
513dd9b5fc 场景2 2025-08-28 11:15:11 +08:00
puxuan
db721dbb53 fix bug 2025-08-28 10:38:47 +08:00
puxuan
d99175f807 res 2025-08-28 10:17:43 +08:00
tuxinyu
ab5df0906d Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 21:48:57 +08:00
tuxinyu
dbe73675a8 1111111 2025-08-27 21:48:25 +08:00
puxuan
4b6d350215 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 21:44:56 +08:00
puxuan
67ffcb9c1b fix bug 2025-08-27 21:44:53 +08:00
tuxinyu
3fb8fa1c0e Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 21:44:34 +08:00
changyuxiang
458e466262 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 21:33:44 +08:00
tuxinyu
3522b65858 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 21:33:20 +08:00
changyuxiang
5ed50c0ede 场景3 2025-08-27 21:33:19 +08:00
tuxinyu
1f1356d913 11111 2025-08-27 21:33:07 +08:00
puxuan
5087a05afa 天赋信息界面 2025-08-27 21:29:19 +08:00
puxuan
a01bf53f0a Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 20:54:54 +08:00
puxuan
c36dec1a7b fix bug 2025-08-27 20:54:49 +08:00
tuxinyu
84dca0cd71 1111111 2025-08-27 20:46:52 +08:00
tuxinyu
12211838ce 1111111 2025-08-27 20:37:30 +08:00
tuxinyu
eadaf188dd Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 20:35:49 +08:00
tuxinyu
7989086ebe 11111111 2025-08-27 20:35:35 +08:00
puxuan
515bd7e066 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 20:35:15 +08:00
puxuan
862a3f0177 还原boss 2025-08-27 20:35:09 +08:00
puxuan
db6852ca01 res 2025-08-27 20:30:36 +08:00
tuxinyu
a0dfd94a24 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 20:19:38 +08:00
tuxinyu
65ae28e715 111111111 2025-08-27 20:19:27 +08:00
changyuxiang
e64cabe516 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 20:16:19 +08:00
changyuxiang
caee46ed04 1 2025-08-27 20:16:10 +08:00
tuxinyu
c367168605 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 20:05:19 +08:00
tuxinyu
d76f57d2ec 1111111 2025-08-27 20:05:08 +08:00
changyuxiang
0edf4d4b74 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 19:49:02 +08:00
changyuxiang
be2057beb3 1 2025-08-27 19:47:25 +08:00
tuxinyu
dca5ec2391 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 19:45:35 +08:00
tuxinyu
8abaf2d846 11111111 2025-08-27 19:45:22 +08:00
changyuxiang
74caaa5a88 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 19:43:00 +08:00
changyuxiang
f9d0b87676 场景2动画 2025-08-27 19:42:46 +08:00
puxuan
12c52903aa Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 19:37:41 +08:00
puxuan
8fdadba962 fix bug 2025-08-27 19:37:20 +08:00
tuxinyu
d392473c6e Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 19:31:43 +08:00
tuxinyu
c9bb11ed29 111111 2025-08-27 19:31:28 +08:00
puxuan
b70249c249 fix bug 2025-08-27 19:27:18 +08:00
puxuan
504e40eb38 res 2025-08-27 19:07:24 +08:00
puxuan
945a1ce922 fix bug 2025-08-27 18:57:27 +08:00
puxuan
e4fe7b0726 res 2025-08-27 16:33:11 +08:00
puxuan
a9c7c04316 fix bug 2025-08-27 16:24:09 +08:00
puxuan
29317b4ea4 fix bug 2025-08-27 16:09:59 +08:00
puxuan
e07da910b5 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 14:22:41 +08:00
puxuan
06addac953 fix bug 2025-08-27 14:22:36 +08:00
tuxinyu
d70dec2f19 呃呃呃呃 2025-08-27 10:20:33 +08:00
tuxinyu
310e5f4c79 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-27 10:15:35 +08:00
tuxinyu
9185bd21ce 1111111 2025-08-27 10:15:06 +08:00
puxuan
adaca35ac5 config 2025-08-27 09:46:04 +08:00
changyuxiang
fe9c082c38 快递天使 2025-08-26 21:15:05 +08:00
tuxinyu
4477a52fab Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-26 19:21:23 +08:00
tuxinyu
403001b3ab 1111111 2025-08-26 19:21:03 +08:00
changyuxiang
41be97bb08 1 2025-08-25 20:20:00 +08:00
tuxinyu
1de8644056 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-25 19:30:32 +08:00
tuxinyu
5d9f65f6d0 1111111111 2025-08-25 19:30:17 +08:00
puxuan
1a31862d94 头像 2025-08-22 17:59:17 +08:00
puxuan
a4fdfb1dde 头像 2025-08-22 17:50:07 +08:00
puxuan
3c915c8d73 fix bug 2025-08-22 17:04:00 +08:00
puxuan
e041781019 fix bug 2025-08-22 15:47:26 +08:00
puxuan
6c1aa4263b fix bug 2025-08-22 15:28:02 +08:00
puxuan
d9e7c928f6 config 2025-08-22 14:57:07 +08:00
puxuan
b59fd66886 fix bug 2025-08-22 14:35:07 +08:00
puxuan
6ad37f7cc0 fix bug 2025-08-22 10:56:15 +08:00
puxuan
1dfc90943f talent 2025-08-21 21:44:32 +08:00
puxuan
d30e9e502f fix bug 2025-08-21 21:06:54 +08:00
changyuxiang
1b06feed2c Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-21 19:54:58 +08:00
changyuxiang
d57ef8ace6 1 2025-08-21 19:54:37 +08:00
puxuan
c737e2cd89 config 2025-08-21 19:36:26 +08:00
puxuan
a5d135a78a fix bug 2025-08-21 18:26:13 +08:00
puxuan
f764b389d5 vs 2025-08-21 17:56:15 +08:00
puxuan
e360bb7662 英雄 2025-08-21 17:45:53 +08:00
puxuan
2daa1d6006 idle 2025-08-21 16:23:50 +08:00
puxuan
6f86255585 成就 2025-08-21 16:01:34 +08:00
puxuan
3d7c916058 idle 2025-08-21 14:42:52 +08:00
puxuan
f5a3400308 fix bug 2025-08-21 11:35:08 +08:00
puxuan
2242ca17dd talent 2025-08-21 10:09:51 +08:00
tuxinyu
df8aef2f45 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-20 21:46:14 +08:00
tuxinyu
5684447b6a 11111111 2025-08-20 21:45:25 +08:00
changyuxiang
aba89f58fc 1 2025-08-20 21:24:01 +08:00
changyuxiang
fabe2a6b3d 匹配成功动效 2025-08-20 21:00:44 +08:00
changyuxiang
b7e9c5c3d7 1 2025-08-20 20:18:32 +08:00
changyuxiang
584489c613 1 2025-08-20 19:59:35 +08:00
puxuan
b506620e47 fix bug 2025-08-20 17:44:40 +08:00
puxuan
b9bd81f802 arena 2025-08-20 16:12:27 +08:00
puxuan
ecd5958b55 fix bug 2025-08-20 15:57:02 +08:00
puxuan
5fbf156762 英雄 2025-08-20 11:43:19 +08:00
puxuan
07adc9afd3 config 2025-08-19 21:18:35 +08:00
puxuan
52e9a63ab3 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-19 21:14:20 +08:00
puxuan
8c228bfc90 英雄 2025-08-19 21:14:17 +08:00
changyuxiang
d8386149e7 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-19 20:44:22 +08:00
changyuxiang
925a6cb8eb 1 2025-08-19 20:44:16 +08:00
puxuan
9bfbada234 fix bug 2025-08-19 20:33:25 +08:00
puxuan
457b3b23a8 fix bug 2025-08-19 17:32:44 +08:00
puxuan
c301840cb2 场景 2025-08-19 17:14:23 +08:00
puxuan
edfbd9ec35 fix bug 2025-08-19 15:11:57 +08:00
puxuan
679ae0de42 任务跳转 2025-08-19 14:31:44 +08:00
puxuan
1f414ccc84 fix bug 2025-08-19 10:38:58 +08:00
puxuan
9dd813c593 fix bug 2025-08-18 20:50:24 +08:00
puxuan
c79625c019 英雄技能 2025-08-18 18:13:35 +08:00
puxuan
25ca47f63b fix bug 2025-08-18 11:59:36 +08:00
puxuan
14c28c83bf fix bug 2025-08-18 11:49:07 +08:00
puxuan
9a4dd35b5b Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-18 10:43:00 +08:00
puxuan
6794741f34 主界面 2025-08-18 10:42:57 +08:00
changyuxiang
67d82fdb65 调大小 2025-08-15 21:40:26 +08:00
changyuxiang
ac6a61b6af 1 2025-08-15 21:11:53 +08:00
changyuxiang
4a7df9f57f p44001海的女儿 2025-08-15 20:51:27 +08:00
puxuan
42d074f1cb . 2025-08-15 20:24:05 +08:00
puxuan
c74953aabc 。。 2025-08-15 20:17:28 +08:00
puxuan
5654eb7445 .. 2025-08-15 20:12:27 +08:00
tuxinyu
f1f3c2ba6b 11111111 2025-08-15 19:53:54 +08:00
tuxinyu
d601930533 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-15 19:51:30 +08:00
tuxinyu
673739b538 111111111 2025-08-15 19:51:15 +08:00
puxuan
f3708369a7 chapter2 2025-08-15 18:22:52 +08:00
puxuan
40ae361190 局内 2025-08-15 17:34:34 +08:00
tuxinyu
b2a31dc888 d8d8e 2025-08-15 15:56:46 +08:00
tuxinyu
e2df1b56e0 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-15 15:39:39 +08:00
tuxinyu
be813055c8 guugg 2025-08-15 15:39:21 +08:00
puxuan
cf8b1aa7a8 res 2025-08-15 15:00:48 +08:00
puxuan
cb9acdb86b res 2025-08-15 14:28:17 +08:00
puxuan
46044a175b skill 2025-08-15 11:38:32 +08:00
puxuan
7d0ea33c71 config 2025-08-15 11:16:40 +08:00
puxuan
8d852e11c3 lua 2025-08-15 11:08:40 +08:00
puxuan
6194090eb3 res 2025-08-15 10:40:19 +08:00
changyuxiang
c838e603e6 1 2025-08-14 20:51:56 +08:00
tuxinyu
03e7a5368e Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-14 20:50:30 +08:00
tuxinyu
a666ac3417 1111111 2025-08-14 20:50:19 +08:00
changyuxiang
3a26dc2dd2 平底锅战神p24001 2025-08-14 20:20:19 +08:00
tuxinyu
294bf0121b Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-14 19:40:11 +08:00
tuxinyu
ce94619813 11111111 2025-08-14 19:40:03 +08:00
puxuan
e61171acc8 res 2025-08-14 18:19:14 +08:00
puxuan
698cf0922f 每日挑战任务 2025-08-14 18:05:58 +08:00
puxuan
840672e242 config 2025-08-14 16:03:59 +08:00
puxuan
8f629e1ac0 红点 2025-08-14 16:01:21 +08:00
puxuan
f1cc76dc42 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-14 11:49:12 +08:00
puxuan
d63306b9a4 主线 2025-08-14 11:49:09 +08:00
tuxinyu
83de30c45e 11111111 2025-08-13 21:36:11 +08:00
tuxinyu
f0019edefb Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-13 20:56:39 +08:00
tuxinyu
f0a3b22724 1111111 2025-08-13 20:56:32 +08:00
puxuan
b863a8e3f4 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-13 20:55:35 +08:00
puxuan
f57f7e5225 战斗力 2025-08-13 20:55:28 +08:00
tuxinyu
3ed6ac716d Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-13 20:08:04 +08:00
tuxinyu
0d574dfec7 11111111 2025-08-13 20:07:56 +08:00
puxuan
a83f98212b Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-13 20:05:34 +08:00
puxuan
f910e5898d 2025-08-13 20:05:10 +08:00
changyuxiang
19fdca577f Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-13 19:49:42 +08:00
changyuxiang
fe750e0645 boss 2025-08-13 19:49:29 +08:00
tuxinyu
30e75cf876 11111111 2025-08-13 19:47:57 +08:00
tuxinyu
a234e231e7 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-13 19:42:03 +08:00
tuxinyu
e88575790b 111111 2025-08-13 19:41:49 +08:00
puxuan
4a945ae37d 主线 2025-08-13 18:33:41 +08:00
puxuan
01a7063020 2025-08-13 17:17:37 +08:00
puxuan
1468aebe4d 英雄信息 2025-08-13 16:27:40 +08:00
puxuan
22a6577076 抽卡 2025-08-13 15:38:46 +08:00
changyuxiang
9621200f95 所有精英到齐 2025-08-12 20:11:11 +08:00
puxuan
1aff7876ec 抽卡 2025-08-12 19:44:10 +08:00
puxuan
a4ea1fabaa meta 2025-08-12 09:52:23 +08:00
changyuxiang
27b796556c Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-11 20:46:29 +08:00
changyuxiang
05efb66d3b 精英两个 2025-08-11 20:46:06 +08:00
puxuan
881c683953 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-11 20:39:30 +08:00
puxuan
54cdfc3e47 抽卡 2025-08-11 20:39:27 +08:00
tuxinyu
1b23618a5d Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-11 13:05:20 +08:00
tuxinyu
48b6c358ef 111111111 2025-08-11 13:05:12 +08:00
puxuan
d9ddc699c9 设置 2025-08-11 10:18:06 +08:00
puxuan
a0cf7ed49d 设置 2025-08-08 17:37:48 +08:00
puxuan
8913c7fc88 设置 2025-08-08 17:14:39 +08:00
puxuan
13126cb4b2 res 2025-08-08 15:27:17 +08:00
puxuan
2c8a5f70e5 res 2025-08-08 14:19:46 +08:00
puxuan
d385b8c795 局内 2025-08-08 11:42:15 +08:00
puxuan
7cd4088ecd Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-08 11:41:24 +08:00
puxuan
313e3f6bdf 局内 2025-08-08 11:41:21 +08:00
tuxinyu
4acd0f9bcb 11111 2025-08-08 10:08:09 +08:00
changyuxiang
6fa1b63954 1 2025-08-06 21:59:34 +08:00
changyuxiang
5b3a108204 胜利失败 2025-08-06 21:34:21 +08:00
puxuan
56a472e971 2025-08-06 20:47:20 +08:00
puxuan
7080ca79f7 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-06 20:46:51 +08:00
puxuan
dd1063d61e task 2025-08-06 20:46:47 +08:00
changyuxiang
d8ca62d0c8 1 2025-08-06 20:05:24 +08:00
tuxinyu
46488baee7 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-06 19:49:48 +08:00
tuxinyu
f011b093d6 11111 2025-08-06 19:49:26 +08:00
puxuan
eb10c29940 android 2025-08-05 17:29:22 +08:00
puxuan
6ef7de12af res 2025-08-05 14:59:18 +08:00
puxuan
67da3359ac Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-05 10:26:51 +08:00
puxuan
c79e3498bc res 2025-08-05 10:26:43 +08:00
tuxinyu
b507498f30 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-04 20:58:52 +08:00
tuxinyu
e763a97390 111111 2025-08-04 20:58:32 +08:00
puxuan
5682c2aace res 2025-08-04 19:51:41 +08:00
puxuan
26b7f4d109 build 2025-08-04 19:44:45 +08:00
puxuan
d351d4549f build 2025-08-04 19:14:30 +08:00
puxuan
4ce72abeb5 res 2025-08-04 18:49:43 +08:00
puxuan
a351869a40 res 2025-08-04 17:15:32 +08:00
puxuan
568915467c 主界面 2025-08-04 17:10:12 +08:00
puxuan
c2d8f2f894 天赋 2025-08-04 11:44:25 +08:00
puxuan
e1593159f8 meta 2025-08-04 09:42:04 +08:00
puxuan
fcfcbfd9ae Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-08-04 09:41:35 +08:00
puxuan
d398da007f talent 2025-08-04 09:41:32 +08:00
tuxinyu
284cdfbe53 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-31 20:54:58 +08:00
tuxinyu
a509b5b119 1111111 2025-07-31 20:54:43 +08:00
changyuxiang
7456741201 1 2025-07-31 20:53:57 +08:00
changyuxiang
62e22bc2e8 1 2025-07-29 20:04:55 +08:00
puxuan
cdc40c57ad 公司 2025-07-28 21:37:47 +08:00
changyuxiang
f8a2738052 删除动作融合 2025-07-28 21:35:05 +08:00
changyuxiang
79e55d3646 1 2025-07-28 21:32:41 +08:00
changyuxiang
e1b1bafd78 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-28 21:05:51 +08:00
changyuxiang
5810bba3d8 精英5个 2025-07-28 21:05:35 +08:00
tuxinyu
7bb1df9f35 111111 2025-07-28 21:04:58 +08:00
tuxinyu
f0bb21c710 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-28 21:00:08 +08:00
tuxinyu
f7b00effe8 1111111 2025-07-28 20:59:27 +08:00
changyuxiang
a0c49f6a6e Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-28 20:42:55 +08:00
changyuxiang
e4aadf984d 1 2025-07-28 20:42:43 +08:00
puxuan
a335e07912 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-28 20:37:13 +08:00
puxuan
2080d5d643 挂机 2025-07-28 20:37:09 +08:00
tuxinyu
b50725a99c Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-28 20:15:46 +08:00
tuxinyu
6d7ddf4a25 1111111 2025-07-28 20:15:25 +08:00
puxuan
f12dad8c7f config 2025-07-23 20:06:30 +08:00
changyuxiang
3c60d66567 1 2025-07-22 21:02:55 +08:00
changyuxiang
2b95659045 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-22 20:48:32 +08:00
changyuxiang
2018520302 1 2025-07-22 20:48:26 +08:00
puxuan
d0fa3731bb arena 2025-07-22 20:43:38 +08:00
puxuan
7db28b8e49 arena 2025-07-21 21:05:32 +08:00
tuxinyu
bec8324c7b Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-17 19:28:15 +08:00
tuxinyu
cdb2e850fb 11111 2025-07-17 19:27:37 +08:00
kai
3f12d50201 每日挑战 2025-07-16 21:58:51 +08:00
kai
4fb30c128d 每日挑战 2025-07-16 21:56:44 +08:00
changyuxiang
b2cd80a254 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-16 21:38:24 +08:00
changyuxiang
f3b8eec0cd 1 2025-07-16 21:38:20 +08:00
puxuan
3510a6bef5 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-15 20:59:50 +08:00
puxuan
94227802b4 arena 2025-07-15 20:59:15 +08:00
changyuxiang
c17c28f4fe 过热小莫、火花机 2025-07-15 20:53:38 +08:00
changyuxiang
97ba55700d Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-14 21:42:00 +08:00
changyuxiang
080cb76743 1 2025-07-14 21:41:57 +08:00
puxuan
b921faab86 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-14 21:32:58 +08:00
puxuan
7515a0ef1b arena 2025-07-14 21:32:49 +08:00
changyuxiang
61e7e50afd 最后一个怪 2025-07-14 20:59:43 +08:00
puxuan
86f8891173 主界面箱子 2025-07-14 20:48:32 +08:00
kai
4429fb0e24 竞技场 2025-07-13 23:09:23 +08:00
changyuxiang
776d33f119 1 2025-07-09 22:04:58 +08:00
changyuxiang
a8e400309d 一波小怪 2025-07-09 21:22:43 +08:00
tuxinyu
6cfa99a2fd 11111111 2025-07-09 20:49:33 +08:00
tuxinyu
ff7526810b Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-09 20:00:33 +08:00
tuxinyu
bff03d9595 1111111 2025-07-09 20:00:22 +08:00
kai
e1abcbf979 主界面 2025-07-07 23:37:57 +08:00
puxuan
d7db1af006 Merge branch 'dev_chapter' into dev_hero 2025-07-07 21:39:59 +08:00
puxuan
ccf4d4cf3e 主界面 2025-07-07 21:39:35 +08:00
changyuxiang
ac48012ed0 传两个小怪,差6个 2025-07-07 20:38:27 +08:00
puxuan
c47f373913 Merge branch 'dev_3' into dev_hero 2025-07-07 19:59:32 +08:00
puxuan
6fbcf645cb 屏蔽报错 2025-07-07 19:58:01 +08:00
puxuan
b4c27e47f0 Merge branch 'dev_hero' into dev_chapter
# Conflicts:
#	Assets/arts/atlas/ui/main.spriteatlas
#	Assets/arts/textures/ui/main/main_bar_2_bg.png.meta
#	Assets/arts/textures/ui/main/main_bg_4.png.meta
2025-07-04 12:56:52 +08:00
puxuan
a4c4632f98 res 2025-07-04 12:54:20 +08:00
puxuan
fd3cac4e2e proto 2025-07-04 12:51:21 +08:00
puxuan
424c407aba proto 2025-07-04 12:49:14 +08:00
puxuan
604b634b80 chapter 2025-07-03 20:56:56 +08:00
tuxinyu
c7b30dcf87 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-03 20:46:14 +08:00
tuxinyu
0845703721 1111 2025-07-03 20:40:51 +08:00
changyuxiang
10693e85b3 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-07-02 20:39:09 +08:00
changyuxiang
d06e38ae36 1 2025-07-02 20:39:02 +08:00
tuxinyu
bbcbdabe27 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-06-30 22:14:50 +08:00
tuxinyu
194eef9612 1111111 2025-06-30 22:14:34 +08:00
puxuan
d92df2510a hero 2025-06-30 22:05:54 +08:00
puxuan
d66db62d4b hero 2025-06-30 22:02:12 +08:00
changyuxiang
d128fb5203 2025-06-30 20:08:39 +08:00
kai
d5bdd59e65 . 2025-06-29 16:45:09 +08:00
kai
3a47091fa5 主界面 2025-06-29 16:36:24 +08:00
kai
d988308e79 主界面 2025-06-29 15:15:37 +08:00
kai
4bd8a963ce 主界面 2025-06-29 13:38:53 +08:00
kai
d8fe750a63 竞技场报错 2025-06-29 11:34:35 +08:00
kai
8611677a5d 商店报错 2025-06-29 10:37:02 +08:00
kai
f199aa4642 hero 2025-06-28 19:10:51 +08:00
puxuan
bab3c5b294 hero 2025-06-28 14:15:41 +08:00
puxuan
1d826dca2d 英雄界面 2025-06-26 21:34:10 +08:00
puxuan
5d042832ad hero 2025-06-26 00:14:17 +08:00
puxuan
c8ef9aa7e7 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-06-26 00:13:52 +08:00
puxuan
3e707f40a6 res 2025-06-25 22:44:41 +08:00
puxuan
d1c1de9e75 res 2025-06-25 22:42:55 +08:00
changyuxiang
f526f0fcfb Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-06-25 19:30:41 +08:00
changyuxiang
e6eca956a3 更新怪 2025-06-25 19:30:37 +08:00
tuxinyu
0970248aaa 6we8gf4rweg5 2025-06-24 21:21:54 +08:00
puxuan
5291201c37 lua 2025-06-23 22:15:24 +08:00
changyuxiang
27296bd4ed 怪物123重制版 2025-06-23 21:26:33 +08:00
changyuxiang
75da39d626 10个英雄更新 2025-06-23 20:31:50 +08:00
puxuan
7106d1b991 star 2025-06-23 00:04:42 +08:00
puxuan
69701634df 暂时还原p0001-p0004 2025-06-22 22:15:23 +08:00
puxuan
b457d91a2d Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-06-22 19:06:13 +08:00
puxuan
0223007bc4 star 2025-06-22 19:06:10 +08:00
changyuxiang
4bf6afa963 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-06-20 22:28:06 +08:00
changyuxiang
01569a9965 改名字 2025-06-20 22:28:01 +08:00
tuxinyu
5ee0c9c5f1 Merge branch 'dev_hero' of https://git.wdd817.link/puxuan/c1_unity into dev_hero 2025-06-19 21:15:43 +08:00
tuxinyu
9cedb170d6 5413564 2025-06-19 21:15:37 +08:00
changyuxiang
08434ef5b5 死灵法师 2025-06-19 21:14:08 +08:00
changyuxiang
513acf7dc9 死灵法师 2025-06-19 20:32:37 +08:00
puxuan
9034e6a452 fix bug 2025-06-18 21:24:27 +08:00
puxuan
5b143a061f fix bug 2025-06-17 21:00:44 +08:00
puxuan
dd355826d3 fix bug 2025-06-17 20:51:43 +08:00
puxuan
c530cf25b9 fix bug 2025-06-17 20:29:18 +08:00
puxuan
99cccbbb75 res 2025-06-17 19:59:50 +08:00
puxuan
0510e5c71b fix bug 2025-06-17 19:40:26 +08:00
puxuan
71edfe09ca fix bug 2025-06-16 20:59:30 +08:00
puxuan
35e3a95e79 Merge branch 'dev_spine' into dev_hero 2025-06-16 20:20:28 +08:00
1dde46fb3a 1 2025-06-13 02:26:43 +08:00
47d3a203d8 加个born 2025-06-13 00:18:23 +08:00
puxuan
7f796f480c tips 2025-06-12 22:47:33 +08:00
puxuan
c3d9830278 config 2025-06-12 22:06:18 +08:00
puxuan
1b031303fc Merge branch 'dev_spine' into dev_hero 2025-06-12 22:05:06 +08:00
d5ec878c3f 1 2025-06-12 01:21:57 +08:00
puxuan
68da2a7313 boss技能 2025-06-11 23:52:39 +08:00
puxuan
674e9c8679 mystery_box 2025-06-10 23:37:34 +08:00
puxuan
0b45dbebb8 Merge branch 'dev_spine' into dev_hero 2025-06-10 23:37:00 +08:00
94377eed13 1 2025-06-10 22:27:22 +08:00
puxuan
37dc0e4dad 受击 2025-06-09 23:51:29 +08:00
puxuan
7a0501f3ce Merge branch 'dev_spine' into dev_hero 2025-06-09 23:44:24 +08:00
95533b39a2 1 2025-06-09 23:42:28 +08:00
puxuan
3aeae3c273 Merge branch 'dev_spine' into dev_hero 2025-06-09 23:20:46 +08:00
6e6fc18cd8 2025-06-09 21:55:45 +08:00
e90fdc5796 1 2025-06-08 21:52:16 +08:00
puxuan
b9e1915f98 fix bug 2025-06-06 16:29:18 +08:00
puxuan
d080d9b23e hero 2025-06-05 00:14:52 +08:00
puxuan
d82329610d skill 2025-06-03 23:58:23 +08:00
puxuan
2b15221013 Merge branch 'dev_spine' into dev_hero 2025-06-02 23:37:33 +08:00
tuxinyu
dc0eee51b9 章鱼哥 2025-05-29 20:56:23 +08:00
puxuan
a77df017d7 hero 2025-05-28 00:21:24 +08:00
puxuan
472cefe2ca Merge branch 'dev_spine' into dev_hero 2025-05-27 00:09:19 +08:00
puxuan
4cb91d9c95 升星 2025-05-27 00:08:50 +08:00
8c70edf172 1 2025-05-26 22:53:40 +08:00
57119c41da 1 2025-05-26 22:42:47 +08:00
b7014b03ee 678 2025-05-26 22:42:25 +08:00
puxuan
14a895bfc0 2025-05-25 23:41:09 +08:00
puxuan
e346e7146e hero 2025-05-25 23:34:19 +08:00
puxuan
7718bc4ab0 英雄基础数据 2025-05-25 19:22:07 +08:00
puxuan
4106b91afd Merge branch 'dev_spine' into dev_hero 2025-05-24 23:51:39 +08:00
puxuan
5f87e1e817 hero 2025-05-24 23:49:57 +08:00
000e3803dc 替换UI文件 2025-05-24 21:14:51 +08:00
puxuan
25f8d5badb lua 2025-05-24 15:48:08 +08:00
0ec8c05429 Merge branch 'dev_spine' of https://git.wdd817.link/puxuan/c1_unity into dev_spine 2025-05-24 14:21:16 +08:00
9472a28e5c ui替换 2025-05-24 14:21:13 +08:00
puxuan
1a2510264e config 2025-05-24 12:00:36 +08:00
puxuan
c145034f84 gm 2025-05-23 22:41:43 +08:00
da58ff6466 Merge branch 'dev_spine' of https://git.wdd817.link/puxuan/c1_unity into dev_spine 2025-05-23 22:32:46 +08:00
71467e216d UI版本更新 2025-05-23 22:32:40 +08:00
puxuan
97fd207faf Merge branch 'dev' into dev_spine 2025-05-23 00:05:23 +08:00
puxuan
9916b78bb6 lua 2025-05-22 22:53:38 +08:00
f7ba919c6a Merge branch 'dev_spine' of https://git.wdd817.link/puxuan/c1_unity into dev_spine 2025-05-20 23:49:06 +08:00
2393149460 UI替换 2025-05-20 23:42:34 +08:00
puxuan
1e5d69bed5 fix bug 2025-05-20 23:11:58 +08:00
puxuan
2639862d95 proto 2025-05-19 22:11:40 +08:00
5328524eed Merge branch 'dev_spine' of https://git.wdd817.link/puxuan/c1_unity into dev_spine 2025-05-18 22:57:44 +08:00
c1c8ae1a91 1 2025-05-18 22:57:36 +08:00
puxuan
00b2a50ddb Merge branch 'dev' into dev_spine 2025-05-18 22:39:37 +08:00
1ade69bebe 英雄更新 2025-05-18 21:06:27 +08:00
6f4a9e0238 1 2025-05-18 01:34:11 +08:00
ff733e9981 1英雄 2025-05-18 01:34:05 +08:00
1d30bb96a2 主界面UI和小怪BOSS替换 2025-05-17 20:35:44 +08:00
puxuan
aa81a18d2c . 2025-05-15 23:52:48 +08:00
puxuan
5f101e936a log 2025-05-15 22:41:22 +08:00
puxuan
21d6651d1b lua 2025-05-15 22:32:46 +08:00
puxuan
b1ea12e70d .. 2025-05-15 22:12:18 +08:00
puxuan
a447c7470a 屏蔽配置检查 2025-05-15 08:37:58 +08:00
puxuan
43222b0299 主界面 2025-05-13 00:12:08 +08:00
puxuan
54843c5417 spine 2025-05-06 20:44:39 +08:00
puxuan
d33daf1652 c1 2025-05-05 22:23:55 +08:00
kai
2dd336e3bc gate 2025-04-30 23:19:05 +08:00
kai
986b121df4 升级引擎 2025-04-30 23:12:28 +08:00
11585 changed files with 7892777 additions and 383665 deletions

1
.gitignore vendored
View File

@ -54,3 +54,4 @@ Assets/Editor/FYUtils
Assets/Editor/FYUtils.meta Assets/Editor/FYUtils.meta
fbg.log fbg.log
.vsconfig

View File

@ -20,59 +20,30 @@ namespace BFEditor.Build
} }
} }
public static class BuildMode
{
public const string DEV = "dev";
public const string TEST = "test";
public const string PUBLISH = "publish";
}
[Serializable] [Serializable]
public class BuildInfo public class BuildInfo
{ {
public string bundleName; // 包名 public string bundleName; // 包名
public string version; // 版本号 public string version; // 版本号
public string mode; // 渠道名_debug 或 渠道名_release public string mode; // 内网测试包,外网测试包,外网正式包
public int version_code = 1; // 各自渠道的version_code public int versionCode = 1; // 各自渠道的version code
public List<BulidGitInfo> git_info; // 打包的git信息 public List<BulidGitInfo> git_info; // 打包的git信息
public bool exportProject = false; // 是否只导出工程
public bool onlyAssetBundle = false; // 是否只打ab包
[NonSerialized] [NonSerialized]
public bool skipVersion = false; // 是否跳过版本校验 public bool skipVersion = false; // 是否跳过版本校验
public bool IsGPChannel()
{
return bundleName == "com.combo.heroes.puzzle.rpg";
}
public bool IsGPOfficial()
{
return bundleName == "com.combo.heroes.puzzle.rpg";
}
// dev包使用mono编译不会导出as工程
public bool IsDevChannel()
{
return bundleName == "com.juzu.b6.dev" || bundleName == "com.juzu.b6.dev.android" ||
bundleName == "com.juzu.b6.dev.ios";
}
public bool IsReleaseChannel()
{
return !IsDevChannel();
}
// 是否是内网release
public bool IsLanRelease()
{
return bundleName == "com.juzu.b6.release.android" || bundleName == "com.juzu.b6.release.ios";
}
public bool IsPublish() public bool IsPublish()
{ {
return !IsDevChannel() && !IsLanRelease(); return mode == BuildMode.PUBLISH;
}
public bool IsIOSPlatform()
{
return bundleName.Contains("ios");
}
public bool IsAndroidPlatform()
{
return !IsIOSPlatform();
} }
public string GetBundleName() public string GetBundleName()

View File

@ -48,6 +48,12 @@ namespace BFEditor.Build
return false; return false;
} }
// 只打ab包
if (buildInfo.onlyAssetBundle)
{
AssetDatabase.Refresh();
return true;
}
// 删除不进包的多语言 // 删除不进包的多语言
// if (!DeleteOverLanguageAb(buildInfo)) // if (!DeleteOverLanguageAb(buildInfo))
// { // {
@ -73,19 +79,10 @@ namespace BFEditor.Build
watch.Start(); watch.Start();
var result = false; var result = false;
if (BuildAndroidUtils.BuildAndroidPlayer(buildInfo))
if (buildInfo.IsAndroidPlatform() && BuildAndroidUtils.BuildAndroidPlayer(buildInfo))
{ {
result = true; result = true;
} }
#if UNITY_EDITOR_OSX
if (buildInfo.IsIOSPlatform() && BuildIOSUtils.BuildIOSPlayer(buildInfo))
{
result = true;
}
#endif
if (result) if (result)
{ {
watch.Stop(); watch.Stop();
@ -140,8 +137,7 @@ namespace BFEditor.Build
var watch = new System.Diagnostics.Stopwatch(); var watch = new System.Diagnostics.Stopwatch();
watch.Start(); watch.Start();
// var buildTarget = buildInfo.IsIOSPlatform() ? BuildTarget.iOS : BuildTarget.Android; var isRelease = true;
var isRelease = buildInfo.IsReleaseChannel();
Debug.Log("[bfinfo]开始打包资源, bundleName : " + buildInfo.bundleName + " version : " + buildInfo.version + " mode : " + buildInfo.mode); Debug.Log("[bfinfo]开始打包资源, bundleName : " + buildInfo.bundleName + " version : " + buildInfo.version + " mode : " + buildInfo.mode);
// // 检查平台 // // 检查平台
@ -197,7 +193,7 @@ namespace BFEditor.Build
} }
// 本地缓存ab // 本地缓存ab
if (buildInfo.IsReleaseChannel()) if (buildInfo.IsPublish())
{ {
Debug.Log("[bfinfo]正在缓存assetbundles..."); Debug.Log("[bfinfo]正在缓存assetbundles...");
BFEditorUtils.CopyDirWithIgnore(outputPath, Path.Combine(AssetBundleCachePath, buildInfo.version), new List<string> { ".meta" }); BFEditorUtils.CopyDirWithIgnore(outputPath, Path.Combine(AssetBundleCachePath, buildInfo.version), new List<string> { ".meta" });

View File

@ -6,20 +6,19 @@ namespace BFEditor.Build
public enum BFPlatformOptions public enum BFPlatformOptions
{ {
AndroidDev = 1, AndroidDev = 1,
IOSDev, AndroidTest,
AndroidRelease,
AndroidGP, AndroidGP,
AndroidGPRU
} }
public class BuildProjectWindow : EditorWindow public class BuildProjectWindow : EditorWindow
{ {
private static int versionCode = 18; private static int VersionCode = 4;
private static string versionName = "1.6.5"; private static string VersionName = "1.2.10";
private static int VersionCodeRU = 12;
private static string VersionNameRU = "0.4.9";
BFPlatformOptions platform = BFPlatformOptions.AndroidDev; BFPlatformOptions platform = BFPlatformOptions.AndroidDev;
const string ANDROID_DEV_PACKAGE_NAME = "com.juzu.b6.dev.android";
const string ANDROID_RELEASE_PACKAGE_NAME = "com.juzu.b6.release.android";
const string ANDROID_GP_PACKAGE_NAME = "com.combo.heroes.puzzle.rpg"; const string ANDROID_GP_PACKAGE_NAME = "com.combo.heroes.puzzle.rpg";
const string IOS_PACKAGE_NAME = "com.juzu.b6.dev.ios";
public BuildProjectWindow() public BuildProjectWindow()
{ {
@ -30,53 +29,93 @@ namespace BFEditor.Build
void OnGUI() void OnGUI()
{ {
GUILayout.BeginVertical("box");
EditorGUILayout.LabelField("选择渠道");
platform = (BFPlatformOptions)EditorGUILayout.EnumPopup("", platform);
EditorGUILayout.Space();
EditorGUILayout.LabelField("版本: " + versionName);
EditorGUILayout.Space();
string packageName; string packageName;
string mode; string mode;
string versionName = VersionName;
int versionCode = VersionCode;
bool skipVersion = false; bool skipVersion = false;
string appType;
if (platform == BFPlatformOptions.AndroidDev) if (platform == BFPlatformOptions.AndroidDev)
{ {
packageName = ANDROID_DEV_PACKAGE_NAME; packageName = ANDROID_GP_PACKAGE_NAME;
skipVersion = true; skipVersion = true;
mode = "dev_debug"; mode = BuildMode.DEV;
versionName = "0.1.0";
versionCode = 1;
appType = "内网测试包";
} }
else if(platform == BFPlatformOptions.AndroidRelease) else if(platform == BFPlatformOptions.AndroidTest)
{ {
packageName = ANDROID_RELEASE_PACKAGE_NAME; packageName = ANDROID_GP_PACKAGE_NAME;
mode = "release_release"; mode = BuildMode.TEST;
versionName = "0.1.0";
versionCode = 1;
appType = "外网测试包";
} }
else if(platform == BFPlatformOptions.AndroidGP) else if(platform == BFPlatformOptions.AndroidGP)
{ {
packageName = ANDROID_GP_PACKAGE_NAME; packageName = ANDROID_GP_PACKAGE_NAME;
mode = "publish_release"; mode = BuildMode.PUBLISH;
appType = "外网正式包";
} }
else else
{ {
packageName = IOS_PACKAGE_NAME; packageName = ANDROID_GP_PACKAGE_NAME;
mode = "dev_debug"; skipVersion = true;
mode = BuildMode.DEV;
versionName = "0.1.0";
versionCode = 1;
appType = "内网测试包";
} }
GUILayout.BeginVertical("box");
EditorGUILayout.LabelField("选择");
platform = (BFPlatformOptions)EditorGUILayout.EnumPopup("", platform);
EditorGUILayout.Space();
EditorGUILayout.LabelField("版本: " + versionName);
EditorGUILayout.Space();
EditorGUILayout.LabelField("包名: " + packageName); EditorGUILayout.LabelField("包名: " + packageName);
EditorGUILayout.LabelField("mode: " + mode); EditorGUILayout.Space();
EditorGUILayout.LabelField(appType);
EditorGUILayout.Space();
EditorGUILayout.Space(); EditorGUILayout.Space();
EditorGUILayout.Space();
if (GUILayout.Button("一键打包"))
{
var buildInfo = new BuildInfo(); var buildInfo = new BuildInfo();
buildInfo.version = versionName; buildInfo.version = versionName;
buildInfo.version_code = versionCode; buildInfo.versionCode = versionCode;
buildInfo.mode = mode; buildInfo.mode = mode;
buildInfo.bundleName = packageName; buildInfo.bundleName = packageName;
buildInfo.skipVersion = skipVersion; buildInfo.skipVersion = skipVersion;
if (GUILayout.Button("一键APK"))
{
buildInfo.exportProject = false;
buildInfo.onlyAssetBundle = false;
BuildProjectTools.BuildBFPlayer(buildInfo);
}
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
if (GUILayout.Button("仅导出工程"))
{
buildInfo.exportProject = true;
buildInfo.onlyAssetBundle = false;
BuildProjectTools.BuildBFPlayer(buildInfo);
}
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
if (GUILayout.Button("仅打ab包"))
{
buildInfo.exportProject = true;
buildInfo.onlyAssetBundle = true;
BuildProjectTools.BuildBFPlayer(buildInfo); BuildProjectTools.BuildBFPlayer(buildInfo);
} }

View File

@ -77,25 +77,12 @@ namespace BFEditor.Build
Directory.CreateDirectory(outputPath); Directory.CreateDirectory(outputPath);
} }
AssetBundleManifest manifest; AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outputPath, options |
if (release)
{
manifest = BuildPipeline.BuildAssetBundles(outputPath, options |
BuildAssetBundleOptions.StrictMode | BuildAssetBundleOptions.StrictMode |
BuildAssetBundleOptions.DisableLoadAssetByFileName | BuildAssetBundleOptions.DisableLoadAssetByFileName |
BuildAssetBundleOptions.DisableLoadAssetByFileNameWithExtension | BuildAssetBundleOptions.DisableLoadAssetByFileNameWithExtension |
BuildAssetBundleOptions.DeterministicAssetBundle, BuildAssetBundleOptions.DeterministicAssetBundle,
target); target);
}
else
{
manifest = BuildPipeline.BuildAssetBundles(outputPath, options |
BuildAssetBundleOptions.StrictMode |
BuildAssetBundleOptions.DisableLoadAssetByFileName |
BuildAssetBundleOptions.DisableLoadAssetByFileNameWithExtension |
BuildAssetBundleOptions.DeterministicAssetBundle,
target);
}
if (manifest == null) if (manifest == null)
{ {
@ -365,12 +352,12 @@ namespace BFEditor.Build
SetProtoABName(Path.Combine(Application.dataPath, "proto"), index++ / total); SetProtoABName(Path.Combine(Application.dataPath, "proto"), index++ / total);
SetSpineABName(Path.Combine(Application.dataPath, "arts", "spines"), index++ / total); SetSpineABName(Path.Combine(Application.dataPath, "arts", "spines"), index++ / total);
SetFirstABName(Path.Combine(Application.dataPath, "first"), index++ / total); SetFirstABName(Path.Combine(Application.dataPath, "first"), index++ / total);
// SetTimelineABName(Path.Combine(Application.dataPath, "arts", "timeline"), 16f / total); // SetTimelineABName(Path.Combine(Application.dataPath, "arts", "timeline"), index++ / total);
SetVideoABName(Path.Combine(Application.dataPath, "arts", "video"), index++ / total); SetVideoABName(Path.Combine(Application.dataPath, "arts", "video"), index++ / total);
// SetLanguageResABName(Resource.ResourceProcessConfig.LANGUAGE_PATH, 19f / total); // SetLanguageResABName(Resource.ResourceProcessConfig.LANGUAGE_PATH, index++ / total);
// SetBakedatasABName(Path.Combine(Application.dataPath, "arts", "bakedatas"), 21f / total); // SetBakedatasABName(Path.Combine(Application.dataPath, "arts", "bakedatas"), index++ / total);
// SetLightProbesABName(Path.Combine(Application.dataPath, "arts", "lightprobes"), 22f / total); // SetLightProbesABName(Path.Combine(Application.dataPath, "arts", "lightprobes"), index++ / total);
// SetReflectionsABName(Path.Combine(Application.dataPath, "arts", "reflections"), 23f / total); // SetReflectionsABName(Path.Combine(Application.dataPath, "arts", "reflections"), index++ / total);
EditorUtility.ClearProgressBar(); EditorUtility.ClearProgressBar();
AssetDatabase.SaveAssets(); AssetDatabase.SaveAssets();
@ -572,11 +559,11 @@ namespace BFEditor.Build
{ {
EditorUtility.DisplayProgressBar("提示", "正在设置spine ABName", progress); EditorUtility.DisplayProgressBar("提示", "正在设置spine ABName", progress);
var dirInfo = new DirectoryInfo(dirPath); string[] dirList = { "ui" , "characters" };
var dirs = dirInfo.GetDirectories(); for (var i = 0; i < dirList.Length; ++i)
for (var i = 0; i < dirs.Length; i++)
{ {
SetABNameBySubDir(dirs[i]); var dirInfo = new DirectoryInfo(Path.Combine(dirPath, dirList[i]));
SetABNameBySubDir(dirInfo);
} }
} }
@ -596,6 +583,11 @@ namespace BFEditor.Build
var dirInfo = new DirectoryInfo(Path.Combine(dirPath, dirList[i])); var dirInfo = new DirectoryInfo(Path.Combine(dirPath, dirList[i]));
SetABNameBySubDir(dirInfo); SetABNameBySubDir(dirInfo);
} }
var dirInfo2 = new DirectoryInfo(Path.Combine(dirPath, "ui", "activity"));
if (dirInfo2.Exists)
{
SetABNameBySubDir(dirInfo2);
}
} }
static void SetBackgroundABName(string dirPath) static void SetBackgroundABName(string dirPath)

View File

@ -3,9 +3,9 @@ using UnityEditor;
using System.IO; using System.IO;
using UnityEditor.Build.Reporting; using UnityEditor.Build.Reporting;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Collections.Generic;
using System; using System;
using System.Threading; using System.Threading;
using System.Collections.Generic;
namespace BFEditor.Build namespace BFEditor.Build
{ {
@ -24,13 +24,13 @@ namespace BFEditor.Build
static string BuglyPath = Application.dataPath + "/../Bugly"; static string BuglyPath = Application.dataPath + "/../Bugly";
static string BuglySOPath = Application.dataPath + "/../Bugly/so"; static string BuglySOPath = Application.dataPath + "/../Bugly/so";
static string GradleExcuteProjectPath = Application.dataPath + "/../BFVersions/android/ub-release"; static string GradleExcuteProjectPath = Application.dataPath + "/../BFVersions/android/ub-release";
static string DevAsProjectPath = Application.dataPath + "/../BFVersions/android/dz_dev";
static string LanReleaseAsProjectPath = Application.dataPath + "/../BFVersions/android/dz_release";
static string GoogleAsProjectPath = Application.dataPath + "/../BFVersions/android/dz_google_apk"; static string GoogleAsProjectPath = Application.dataPath + "/../BFVersions/android/dz_google_apk";
static string GoogleCommonProjectPath = Application.dataPath + "/../BFVersions/android/google_common"; static string GoogleCommonProjectPath = Application.dataPath + "/../BFVersions/android/google_common";
static string GPAsProjectPath = Application.dataPath + "/../BFVersions/android/ub-gp"; // gp删档测试渠道 static string RuStoreProjectPath = Application.dataPath + "/../BFVersions/android/ru_store";
static string GPOfficialAsProjectPath = Application.dataPath + "/../BFVersions/android/ub-google"; // gp正式渠道 static string RuProjectPath = Application.dataPath + "/../BFVersions/android/ru";
static string GoogleServicesProjectPath = Application.dataPath + "/../BFVersions/android/google-services";
static string PublishAsProjectPath = Application.dataPath + "/../BFVersions/android/publish_release"; static string PublishAsProjectPath = Application.dataPath + "/../BFVersions/android/publish_release";
static string KeystoreFilePath = Application.dataPath + "/../BFVersions/android/keystore/dz_keystore.txt";
static string SignShellPath = Application.dataPath + "/../BFFiles/androidkey"; static string SignShellPath = Application.dataPath + "/../BFFiles/androidkey";
static string GpAlginShellPath = Application.dataPath + "/../BFFiles/androidkey"; static string GpAlginShellPath = Application.dataPath + "/../BFFiles/androidkey";
static HashSet<string> AABInPackageFileHashSet = new HashSet<string>() static HashSet<string> AABInPackageFileHashSet = new HashSet<string>()
@ -77,10 +77,19 @@ namespace BFEditor.Build
var bpOptions = GetBuildOptions(buildInfo); var bpOptions = GetBuildOptions(buildInfo);
var report = BuildPipeline.BuildPlayer(bpOptions); var report = BuildPipeline.BuildPlayer(bpOptions);
// 打包成功 // 导出工程成功
if (report.summary.result == BuildResult.Succeeded) if (report.summary.result == BuildResult.Succeeded)
{ {
return BuildAndroidAPK(buildInfo); MergeProject(buildInfo, GoogleAsProjectPath);
FixGradleVersion(buildInfo.versionCode, buildInfo.version);
if (buildInfo.exportProject)
{
return true;
}
else
{
return BuildAPK(buildInfo);
}
} }
else else
{ {
@ -98,7 +107,7 @@ namespace BFEditor.Build
PlayerSettings.bundleVersion = buildInfo.version; PlayerSettings.bundleVersion = buildInfo.version;
// 设置VersionCode // 设置VersionCode
PlayerSettings.Android.bundleVersionCode = buildInfo.version_code; PlayerSettings.Android.bundleVersionCode = buildInfo.versionCode;
// 设置竖屏 // 设置竖屏
PlayerSettings.defaultInterfaceOrientation = UIOrientation.Portrait; PlayerSettings.defaultInterfaceOrientation = UIOrientation.Portrait;
@ -118,41 +127,33 @@ namespace BFEditor.Build
// 设置包名 // 设置包名
PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, buildInfo.bundleName); PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, buildInfo.bundleName);
Debug.Log("[bfinfo]设置包名:" + buildInfo.bundleName);
// 跳过版本控制 // 跳过版本控制
var symbols = ANDROID_DEFINE_SYMBOLS; var symbols = ANDROID_DEFINE_SYMBOLS;
if (buildInfo.skipVersion) if (buildInfo.skipVersion)
{ {
symbols = symbols + ";SKIP_VERSION;"; symbols = symbols + ";SKIP_VERSION";
}
if (buildInfo.mode == BuildMode.DEV)
{
symbols = symbols + ";BF_APP_DEV";
}
else if (buildInfo.mode == BuildMode.TEST)
{
symbols = symbols + ";BF_APP_TEST";
} }
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, symbols); PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, symbols);
Debug.Log("[bfinfo]设置defineSymbols: " + symbols); Debug.Log("[bfinfo]设置defineSymbols: " + symbols);
// 是否是dev PlayerSettings.productName = "Pull Pull Pull Heroes";
var development = buildInfo.IsDevChannel() ? true : false; EditorUserBuildSettings.development = false;
EditorUserBuildSettings.development = development; EditorUserBuildSettings.androidBuildType = AndroidBuildType.Release;
// 商品名称
// 应用名
if (buildInfo.IsPublish())
{
PlayerSettings.productName = "Knights Combo";
}
else
{
PlayerSettings.productName = development ? "b6-dev" : "b6-release";
}
// BuildType设置dev/release
EditorUserBuildSettings.androidBuildType = development ? AndroidBuildType.Debug : AndroidBuildType.Release;
// 是否导出as工程 // 是否导出as工程
// EditorUserBuildSettings.exportAsGoogleAndroidProject = development ? false : true;
EditorUserBuildSettings.exportAsGoogleAndroidProject = true; EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
// dev使用Mono release使用IL2CPP var scriptImp = ScriptingImplementation.IL2CPP;
var scriptImp = development ? ScriptingImplementation.Mono2x : ScriptingImplementation.IL2CPP;
PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, scriptImp); PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, scriptImp);
} }
@ -164,29 +165,9 @@ namespace BFEditor.Build
var bpOptions = new BuildPlayerOptions(); var bpOptions = new BuildPlayerOptions();
bpOptions.scenes = AssetBundleUtils.GetBuildScenes(); bpOptions.scenes = AssetBundleUtils.GetBuildScenes();
bpOptions.target = BuildTarget.Android; bpOptions.target = BuildTarget.Android;
// if (buildInfo.IsDevChannel())
// {
// bpOptions.locationPathName = GetDevApkPathName(buildInfo);
// Debug.Log("[bfinfo]apk path : " + bpOptions.locationPathName);
// }
// else
// {
// bpOptions.locationPathName = GetASProjectPathName();
// Debug.Log("[bfinfo]asProject path : " + bpOptions.locationPathName);
// }
bpOptions.locationPathName = GetASProjectPathName(buildInfo); bpOptions.locationPathName = GetASProjectPathName(buildInfo);
BuildOptions options; BuildOptions options = BuildOptions.None;
if (buildInfo.IsReleaseChannel())
{
options = BuildOptions.None;
}
else
{
options = BuildOptions.Development;
}
bpOptions.options = options; bpOptions.options = options;
return bpOptions; return bpOptions;
} }
@ -200,7 +181,7 @@ namespace BFEditor.Build
static string GetASProjectPathName(BuildInfo buildInfo) static string GetASProjectPathName(BuildInfo buildInfo)
{ {
var dir = Path.Combine(AS_PROJECT_PATH, buildInfo.mode); var dir = Path.Combine(AS_PROJECT_PATH, "publish_release");
if (Directory.Exists(dir)) if (Directory.Exists(dir))
{ {
Directory.Delete(dir, true); Directory.Delete(dir, true);
@ -208,32 +189,53 @@ namespace BFEditor.Build
return dir; return dir;
} }
static bool BuildAPK(BuildInfo buildInfo) static bool BuildAPK(BuildInfo buildInfo, bool isAAB = false)
{ {
if (buildInfo.IsGPChannel()) // 设置jdk环境变量
string javaHomePath = System.Environment.GetEnvironmentVariable("JAVE_HOME");
if (string.IsNullOrEmpty(javaHomePath))
{ {
MergeGPToReleaseProject(buildInfo); Debug.LogError("[bferror] 找不到环境变量JAVE_HOME");
FixGradleVersion(buildInfo.version_code, buildInfo.version); return false;
} }
var gradleFilePath = Path.Combine(PublishAsProjectPath, "gradle.properties");
if (buildInfo.IsLanRelease()) var gradleFileText = File.ReadAllText(gradleFilePath);
if (!gradleFileText.Contains("org.gradle.java.home"))
{ {
AddBuglyParamsToReleaseProject(); gradleFileText = gradleFileText + "\norg.gradle.java.home=" + javaHomePath.Replace("\\", "/");
}
File.WriteAllText(gradleFilePath, gradleFileText);
// 设置密钥密码
if (File.Exists(KeystoreFilePath))
{
var password = File.ReadAllText(KeystoreFilePath).Replace("\n", "").Replace("\r", "");
var buildGradlePath = Path.Combine(PublishAsProjectPath, "launcher/build.gradle");
var text = File.ReadAllText(buildGradlePath);
var regex = new Regex("REPLACE_PASSWORD");
text = regex.Replace(text, password);
File.WriteAllText(buildGradlePath, text);
} }
Debug.Log("[bfinfo]正在buildApk..."); Debug.Log("[bfinfo]正在buildApk...");
var success = true; var success = true;
var args = ""; var args = "assembleRelease";
if (buildInfo.IsReleaseChannel()) if (isAAB)
{ {
args += " assembleRelease"; args = "bundleRelease";
} }
else string gradleHomePath = System.Environment.GetEnvironmentVariable("GRADLE_HOME");
if (string.IsNullOrEmpty(gradleHomePath))
{ {
args += " assembleDebug"; Debug.LogError("[bferror] 找不到环境变量GRADLE_HOME");
return false;
} }
#if UNITY_EDITOR_OSX
BFEditorUtils.RunCommond(GRADLE_PATH, args, GradleExcuteProjectPath, var gradleCommondPath = Path.Combine(gradleHomePath, "gradle");
#else
var gradleCommondPath = Path.Combine(gradleHomePath, "gradle.bat");
#endif
BFEditorUtils.RunCommond(gradleCommondPath, args, PublishAsProjectPath,
(msg) => (msg) =>
{ {
}, },
@ -245,80 +247,35 @@ namespace BFEditor.Build
Debug.LogError("[bferror] " + errorMsg); Debug.LogError("[bferror] " + errorMsg);
} }
}); });
if (buildInfo.IsGPChannel())
{
// 尝试制作并上传bugly符号表 开新Thread不影响打包流程
if (success)
{
CopySOAndUploadBuglySymbol(buildInfo.bundleName, buildInfo.version);
}
}
return success; return success;
} }
static bool BuildAAB(BuildInfo buildInfo)
{
var result = true;
if(buildInfo.IsGPChannel())
{
// MergeGPToReleaseProject(buildInfo);
// FixGradleVersion(buildInfo.version_code, buildInfo.version);
}
return result;
}
static bool BuildAndroidAPK(BuildInfo buildInfo)
{
var result = true;
if(buildInfo.IsDevChannel())
{
MergeProject(buildInfo, DevAsProjectPath);
var dir = Path.Combine(Application.dataPath, "../", AS_PROJECT_PATH, buildInfo.mode);
BFEditorUtils.RunCommond("gradle", " assembleDebug", dir, (msg) => {
}, (errorMsg) => {
Debug.LogError("[bferror] " + errorMsg);
});
}
else if(buildInfo.IsLanRelease())
{
MergeProject(buildInfo, LanReleaseAsProjectPath);
}
else if(buildInfo.IsGPChannel())
{
MergeProject(buildInfo, GoogleAsProjectPath);
FixGradleVersion(buildInfo.version_code, buildInfo.version);
}
return result;
}
/// <summary> /// <summary>
/// 合并dev工程 /// 合并工程
/// </summary> /// </summary>
static void MergeProject(BuildInfo buildInfo, String asProjectPath) static void MergeProject(BuildInfo buildInfo, String asProjectPath)
{ {
Debug.Log("[bfinfo]正在整合dev project..."); Debug.Log("[bfinfo]正在整合 project...");
var dir = Path.Combine(Application.dataPath, "../", AS_PROJECT_PATH, buildInfo.mode); var dir = Path.Combine(Application.dataPath, "../", AS_PROJECT_PATH, "publish_release");
var javaPath = Path.Combine(dir, "unityLibrary/src/main/java"); var javaPath = Path.Combine(dir, "unityLibrary/src/main/java");
var manifestPath = Path.Combine(dir, "unityLibrary/src/main/AndroidManifest.xml"); var manifestPath = Path.Combine(dir, "unityLibrary/src/main/AndroidManifest.xml");
// 老版本unity需要替换这个2021之后的新版本不需要
// 获取到unity打出的build-id // 获取到unity打出的build-id
var reader = new StreamReader(new FileStream(manifestPath, FileMode.Open)); // var reader = new StreamReader(new FileStream(manifestPath, FileMode.Open));
string buildIdLine; // string buildIdLine;
while ((buildIdLine = reader.ReadLine()) != null) // while ((buildIdLine = reader.ReadLine()) != null)
{ // {
if (buildIdLine.Contains("unity.build-id")) // if (buildIdLine.Contains("unity.build-id"))
{ // {
Debug.Log("[bfinfo]修正build-id: " + buildIdLine); // Debug.Log("[bfinfo]修正build-id: " + buildIdLine);
break; // break;
} // }
} // }
reader.Close(); // reader.Close();
reader.Dispose(); // reader.Dispose();
if (Directory.Exists(javaPath)) if (Directory.Exists(javaPath))
{ {
@ -326,6 +283,33 @@ namespace BFEditor.Build
di.Delete(true); di.Delete(true);
} }
// 如果是俄罗斯支付 则需要覆盖为俄罗斯相关文件
// if (buildInfo.bundleName == BF.BFPlatform.ANDROID_GP_PACKAGE_NAME_RU)
// {
// BFEditorUtils.CopyDir(RuProjectPath, dir);
// // 获取到build.gradle和AndroidManifest
// var buildGradlePath = Path.Combine(dir, "launcher/build.gradle");
// var text = File.ReadAllText(buildGradlePath);
// var regex = new Regex("REPLACE_APPLICATION_ID");
// text = regex.Replace(text, buildInfo.bundleName);
// File.WriteAllText(buildGradlePath, text);
// var androidManifestPath = Path.Combine(dir, "launcher/src/main/AndroidManifest.xml");
// text = File.ReadAllText(androidManifestPath);
// regex = new Regex("REPLACE_APPLICATION_ID");
// text = regex.Replace(text, buildInfo.bundleName);
// File.WriteAllText(androidManifestPath, text);
// // 还有另一个AndroidManifest
// androidManifestPath = Path.Combine(dir, "unityLibrary/src/main/AndroidManifest.xml");
// text = File.ReadAllText(androidManifestPath);
// regex = new Regex("REPLACE_APPLICATION_ID");
// text = regex.Replace(text, buildInfo.bundleName);
// File.WriteAllText(androidManifestPath, text);
// }
// // 否则使用通用谷歌
// else
// {
BFEditorUtils.CopyDir(GoogleCommonProjectPath, dir); BFEditorUtils.CopyDir(GoogleCommonProjectPath, dir);
// 获取到google_common复制过去的build.gradle和AndroidManifest // 获取到google_common复制过去的build.gradle和AndroidManifest
var buildGradlePath = Path.Combine(dir, "launcher/build.gradle"); var buildGradlePath = Path.Combine(dir, "launcher/build.gradle");
@ -341,57 +325,21 @@ namespace BFEditor.Build
File.WriteAllText(androidManifestPath, text); File.WriteAllText(androidManifestPath, text);
BFEditorUtils.CopyDir(asProjectPath, dir); BFEditorUtils.CopyDir(asProjectPath, dir);
// 还有dz_google_apk下的AndroidManifest
text = File.ReadAllText(manifestPath); androidManifestPath = Path.Combine(dir, "unityLibrary/src/main/AndroidManifest.xml");
regex = new Regex("REPLACE_BUILD_ID"); text = File.ReadAllText(androidManifestPath);
text = regex.Replace(text, buildIdLine); regex = new Regex("REPLACE_APPLICATION_ID");
File.WriteAllText(manifestPath, text); text = regex.Replace(text, buildInfo.bundleName);
} File.WriteAllText(androidManifestPath, text);
// }
/// <summary> // 统一替换google-services文件
/// 合并gp工程 var gsPath = Path.Combine(GoogleServicesProjectPath, Path.Combine(buildInfo.bundleName, "google-services.json"));
/// </summary> if (File.Exists(gsPath))
static void MergeGPToReleaseProject(BuildInfo buildInfo)
{ {
Debug.Log("[bfinfo]正在整合gp渠道sdk..."); var destFilePath = Path.Combine(dir, "launcher/google-services.json");
File.Copy(gsPath, destFilePath, true);
var javaPath = GradleExcuteProjectPath + "/src/main/java";
var manifestPath = GradleExcuteProjectPath + "/src/main/AndroidManifest.xml";
// 获取到unity打出的build-id
var reader = new StreamReader(new FileStream(manifestPath, FileMode.Open));
string buildIdLine;
while ((buildIdLine = reader.ReadLine()) != null)
{
if (buildIdLine.Contains("unity.build-id"))
{
Debug.Log("[bfinfo]修正build-id: " + buildIdLine);
break;
} }
} }
reader.Close();
reader.Dispose();
if (Directory.Exists(javaPath))
{
var di = new DirectoryInfo(javaPath);
di.Delete(true);
}
if (buildInfo.IsGPOfficial())
{
BFEditorUtils.CopyDir(GPOfficialAsProjectPath, GradleExcuteProjectPath);
}
else
{
BFEditorUtils.CopyDir(GPAsProjectPath, GradleExcuteProjectPath);
}
var text = File.ReadAllText(manifestPath);
var regex = new Regex("REPLACE_BUILD_ID");
text = regex.Replace(text, buildIdLine);
File.WriteAllText(manifestPath, text);
}
/// <summary> /// <summary>
/// fix versionCode versionName /// fix versionCode versionName

View File

@ -1,348 +1,348 @@
#if UNITY_EDITOR_OSX // #if UNITY_EDITOR_OSX
using UnityEngine; // using UnityEngine;
using UnityEditor; // using UnityEditor;
using UnityEditor.Build.Reporting; // using UnityEditor.Build.Reporting;
using UnityEditor.iOS.Xcode; // using UnityEditor.iOS.Xcode;
using System.IO; // using System.IO;
#endif // #endif
namespace BFEditor.Build // namespace BFEditor.Build
{ // {
public static class BuildIOSUtils // public static class BuildIOSUtils
{ // {
#if UNITY_EDITOR_OSX // #if UNITY_EDITOR_OSX
const string IOS_DEFINE_SYMBOLS = "THREAD_SAFE;USE_AB"; // const string IOS_DEFINE_SYMBOLS = "THREAD_SAFE;USE_AB";
const string DEV_XCODE_LOCAL_PATH = "BFVersions/ios/dev"; // const string DEV_XCODE_LOCAL_PATH = "BFVersions/ios/dev";
const string RELEASE_XCODE_LOCAL_PATH = "BFVersions/ios/release"; // const string RELEASE_XCODE_LOCAL_PATH = "BFVersions/ios/release";
static string devXCodePath = Application.dataPath + "/../" + DEV_XCODE_LOCAL_PATH; // static string devXCodePath = Application.dataPath + "/../" + DEV_XCODE_LOCAL_PATH;
static string releaseXCodePath = Application.dataPath + "/../" + RELEASE_XCODE_LOCAL_PATH; // static string releaseXCodePath = Application.dataPath + "/../" + RELEASE_XCODE_LOCAL_PATH;
static string devOptionsPListPath = Application.dataPath + "/../" + "BFVersions/ios/exports/dev/ExportOptions.plist"; // static string devOptionsPListPath = Application.dataPath + "/../" + "BFVersions/ios/exports/dev/ExportOptions.plist";
static string releaseOptionsPListPath = Application.dataPath + "/../" + "BFVersions/ios/exports/release/ExportOptions.plist"; // static string releaseOptionsPListPath = Application.dataPath + "/../" + "BFVersions/ios/exports/release/ExportOptions.plist";
static string publishOptionsPListPath = Application.dataPath + "/../" + "BFVersions/ios/exports/dis/ExportOptions.plist"; // static string publishOptionsPListPath = Application.dataPath + "/../" + "BFVersions/ios/exports/dis/ExportOptions.plist";
public static bool BuildIOSPlayer(BuildInfo buildInfo) // public static bool BuildIOSPlayer(BuildInfo buildInfo)
{ // {
var buildTarget = BuildTarget.iOS; // var buildTarget = BuildTarget.iOS;
// 检查平台 // // 检查平台
if (EditorUserBuildSettings.activeBuildTarget != buildTarget) // if (EditorUserBuildSettings.activeBuildTarget != buildTarget)
{ // {
Debug.LogError("[bferror]当前没有在对应平台"); // Debug.LogError("[bferror]当前没有在对应平台");
return false; // return false;
} // }
// 重新生成XLua // // 重新生成XLua
CompileScriptsUtils.RegenerateXLuaCode(true); // CompileScriptsUtils.RegenerateXLuaCode(true);
// 打包设置 // // 打包设置
BuildSettings(buildInfo); // BuildSettings(buildInfo);
// 开始打包 // // 开始打包
var bpOptions = GetBuildOptions(buildInfo); // var bpOptions = GetBuildOptions(buildInfo);
var report = BuildPipeline.BuildPlayer(bpOptions); // var report = BuildPipeline.BuildPlayer(bpOptions);
if (report.summary.result == BuildResult.Succeeded) // if (report.summary.result == BuildResult.Succeeded)
{ // {
return BuildIpaFromXCode(buildInfo); // return BuildIpaFromXCode(buildInfo);
} // }
else // else
{ // {
Debug.LogError("[bferror]unity打包xcode失败"); // Debug.LogError("[bferror]unity打包xcode失败");
return false; // return false;
} // }
} // }
/// <summary> // /// <summary>
/// 打包设置 // /// 打包设置
/// </summary> // /// </summary>
static void BuildSettings(BuildInfo buildInfo) // static void BuildSettings(BuildInfo buildInfo)
{ // {
// 设置bundleVersion // // 设置bundleVersion
PlayerSettings.bundleVersion = buildInfo.version; // PlayerSettings.bundleVersion = buildInfo.version;
// 设置buildNumber // // 设置buildNumber
PlayerSettings.iOS.buildNumber = buildInfo.version_code.ToString(); // PlayerSettings.iOS.buildNumber = buildInfo.versionCode.ToString();
// 设置竖屏 // // 设置竖屏
PlayerSettings.defaultInterfaceOrientation = UIOrientation.Portrait; // PlayerSettings.defaultInterfaceOrientation = UIOrientation.Portrait;
PlayerSettings.allowedAutorotateToPortrait = false; // PlayerSettings.allowedAutorotateToPortrait = false;
PlayerSettings.allowedAutorotateToPortraitUpsideDown = false; // PlayerSettings.allowedAutorotateToPortraitUpsideDown = false;
PlayerSettings.allowedAutorotateToLandscapeLeft = false; // PlayerSettings.allowedAutorotateToLandscapeLeft = false;
PlayerSettings.allowedAutorotateToLandscapeRight = false; // PlayerSettings.allowedAutorotateToLandscapeRight = false;
// 允许Xcode根据appleDeveloperTeamID自动签署应用程序 // // 允许Xcode根据appleDeveloperTeamID自动签署应用程序
PlayerSettings.iOS.appleEnableAutomaticSigning = !buildInfo.IsPublish(); // PlayerSettings.iOS.appleEnableAutomaticSigning = !buildInfo.IsPublish();
// 使用手动签名时iOS资源调配配置文件的类型自动 // // 使用手动签名时iOS资源调配配置文件的类型自动
PlayerSettings.iOS.iOSManualProvisioningProfileType = buildInfo.IsPublish() ? ProvisioningProfileType.Distribution : ProvisioningProfileType.Automatic; // PlayerSettings.iOS.iOSManualProvisioningProfileType = buildInfo.IsPublish() ? ProvisioningProfileType.Distribution : ProvisioningProfileType.Automatic;
// 关闭启动动画 // // 关闭启动动画
PlayerSettings.SplashScreen.show = false; // PlayerSettings.SplashScreen.show = false;
// 设置包名 // // 设置包名
PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.iOS, buildInfo.bundleName); // PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.iOS, buildInfo.bundleName);
Debug.Log("[bfinfo]设置包名:" + buildInfo.bundleName); // Debug.Log("[bfinfo]设置包名:" + buildInfo.bundleName);
// 是否跳过版本控制 // // 是否跳过版本控制
var symbols = IOS_DEFINE_SYMBOLS; // var symbols = IOS_DEFINE_SYMBOLS;
if (buildInfo.skipVersion) // if (buildInfo.skipVersion)
{ // {
symbols = symbols + ";SKIP_VERSION;"; // symbols = symbols + ";SKIP_VERSION;";
} // }
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, symbols); // PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, symbols);
Debug.Log("[bfinfo]设置defineSymbols: " + symbols); // Debug.Log("[bfinfo]设置defineSymbols: " + symbols);
// 是否是dev // // 是否是dev
var development = buildInfo.IsDevChannel(); // var development = buildInfo.IsDevChannel();
EditorUserBuildSettings.development = development; // EditorUserBuildSettings.development = development;
// 商品名称 // // 商品名称
if (buildInfo.IsPublish()) // if (buildInfo.IsPublish())
{ // {
PlayerSettings.productName = "Heroic Expedition"; // PlayerSettings.productName = "Heroic Expedition";
} // }
else // else
{ // {
PlayerSettings.productName = development ? "b6-dev" : "b6-release"; // PlayerSettings.productName = development ? "b6-dev" : "b6-release";
} // }
// BuildType设置dev/release // // BuildType设置dev/release
EditorUserBuildSettings.iOSBuildConfigType = development ? iOSBuildType.Debug : iOSBuildType.Release; // EditorUserBuildSettings.iOSXcodeBuildConfig = development ? XcodeBuildConfig.Debug : XcodeBuildConfig.Release;
// 使用IL2CPP // // 使用IL2CPP
var scriptImp = ScriptingImplementation.IL2CPP; // var scriptImp = ScriptingImplementation.IL2CPP;
PlayerSettings.SetScriptingBackend(BuildTargetGroup.iOS, scriptImp); // PlayerSettings.SetScriptingBackend(BuildTargetGroup.iOS, scriptImp);
// 目标平台架构目前支持ARM64 // // 目标平台架构目前支持ARM64
PlayerSettings.SetArchitecture(BuildTargetGroup.iOS, 1); // PlayerSettings.SetArchitecture(BuildTargetGroup.iOS, 1);
} // }
/// <summary> // /// <summary>
/// 获取打包参数 // /// 获取打包参数
/// </summary> // /// </summary>
static BuildPlayerOptions GetBuildOptions(BuildInfo buildInfo) // static BuildPlayerOptions GetBuildOptions(BuildInfo buildInfo)
{ // {
var bpOptions = new BuildPlayerOptions(); // var bpOptions = new BuildPlayerOptions();
bpOptions.scenes = AssetBundleUtils.GetBuildScenes(); // bpOptions.scenes = AssetBundleUtils.GetBuildScenes();
bpOptions.target = BuildTarget.iOS; // bpOptions.target = BuildTarget.iOS;
var path = buildInfo.IsReleaseChannel() ? RELEASE_XCODE_LOCAL_PATH : DEV_XCODE_LOCAL_PATH; // var path = buildInfo.IsReleaseChannel() ? RELEASE_XCODE_LOCAL_PATH : DEV_XCODE_LOCAL_PATH;
bpOptions.locationPathName = path; // bpOptions.locationPathName = path;
Debug.Log("[bfinfo]xcode path : " + path); // Debug.Log("[bfinfo]xcode path : " + path);
var absolutePath = buildInfo.IsReleaseChannel() ? releaseXCodePath : devXCodePath; // var absolutePath = buildInfo.IsReleaseChannel() ? releaseXCodePath : devXCodePath;
if (Directory.Exists(absolutePath)) // if (Directory.Exists(absolutePath))
{ // {
Directory.Delete(absolutePath, true); // Directory.Delete(absolutePath, true);
} // }
if (!buildInfo.IsPublish()) // if (!buildInfo.IsPublish())
{ // {
var options = BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging; // var options = BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging;
bpOptions.options = options; // bpOptions.options = options;
} // }
return bpOptions; // return bpOptions;
} // }
/// <summary> // /// <summary>
/// 打包ipa // /// 打包ipa
/// </summary> // /// </summary>
static bool BuildIpaFromXCode(BuildInfo buildInfo) // static bool BuildIpaFromXCode(BuildInfo buildInfo)
{ // {
// 修改XCode设置 // // 修改XCode设置
FixXCodeProject(buildInfo); // FixXCodeProject(buildInfo);
// 权限 // // 权限
UnlockKeyChain(); // UnlockKeyChain();
// archive // // archive
if (!Archive(buildInfo)) // if (!Archive(buildInfo))
{ // {
return false; // return false;
} // }
// 导出ipa // // 导出ipa
if (!ExportIpa(buildInfo)) // if (!ExportIpa(buildInfo))
{ // {
return false; // return false;
} // }
return true; // return true;
} // }
/// <summary> // /// <summary>
/// xCode工程设置 // /// xCode工程设置
/// </summary> // /// </summary>
static void FixXCodeProject(BuildInfo buildInfo) // static void FixXCodeProject(BuildInfo buildInfo)
{ // {
var isDev = buildInfo.IsDevChannel(); // var isDev = buildInfo.IsDevChannel();
var xCodeProjectPath = isDev ? devXCodePath : releaseXCodePath; // var xCodeProjectPath = isDev ? devXCodePath : releaseXCodePath;
var path = xCodeProjectPath + "/Unity-iPhone.xcodeproj/project.pbxproj"; // var path = xCodeProjectPath + "/Unity-iPhone.xcodeproj/project.pbxproj";
var pbxProject = new PBXProject(); // var pbxProject = new PBXProject();
pbxProject.ReadFromFile(path); // pbxProject.ReadFromFile(path);
var targetGuid = pbxProject.TargetGuidByName("Unity-iPhone"); // var targetGuid = pbxProject.TargetGuidByName("Unity-iPhone");
pbxProject.AddBuildProperty(targetGuid, "OTHER_LDFLAGS", "-ObjC"); // pbxProject.AddBuildProperty(targetGuid, "OTHER_LDFLAGS", "-ObjC");
pbxProject.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO"); // pbxProject.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");
pbxProject.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO"); // pbxProject.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");
pbxProject.SetBuildProperty(targetGuid, "DEVELOPMENT_TEAM", "49QQW8856Q"); // pbxProject.SetBuildProperty(targetGuid, "DEVELOPMENT_TEAM", "49QQW8856Q");
if (buildInfo.IsPublish()) // if (buildInfo.IsPublish())
{ // {
pbxProject.SetBuildProperty(targetGuid, "PROVISIONING_PROFILE_SPECIFIER", "ub_appstore_dis"); // pbxProject.SetBuildProperty(targetGuid, "PROVISIONING_PROFILE_SPECIFIER", "ub_appstore_dis");
} // }
// 添加系统库 // // 添加系统库
AddSystemLibReferenceToProject(pbxProject, targetGuid, "libsqlite3.tbd"); // AddSystemLibReferenceToProject(pbxProject, targetGuid, "libsqlite3.tbd");
AddSystemLibReferenceToProject(pbxProject, targetGuid, "libz.1.tbd"); // AddSystemLibReferenceToProject(pbxProject, targetGuid, "libz.1.tbd");
AddSystemLibReferenceToProject(pbxProject, targetGuid, "libiconv.2.tbd"); // AddSystemLibReferenceToProject(pbxProject, targetGuid, "libiconv.2.tbd");
AddSystemLibReferenceToProject(pbxProject, targetGuid, "libresolv.9.tbd"); // AddSystemLibReferenceToProject(pbxProject, targetGuid, "libresolv.9.tbd");
var pListPath = Path.Combine(xCodeProjectPath, "Info.plist"); // var pListPath = Path.Combine(xCodeProjectPath, "Info.plist");
var pList = new PlistDocument(); // var pList = new PlistDocument();
pList.ReadFromFile(pListPath); // pList.ReadFromFile(pListPath);
// 版本号 // // 版本号
var vKey = "CFBundleShortVersionString"; // var vKey = "CFBundleShortVersionString";
var vValue = new PlistElementString(buildInfo.version); // var vValue = new PlistElementString(buildInfo.version);
var pListRoot = pList.root; // var pListRoot = pList.root;
var rootDict = pListRoot.values; // var rootDict = pListRoot.values;
if (!rootDict.ContainsKey(vKey)) // if (!rootDict.ContainsKey(vKey))
{ // {
rootDict.Add(vKey, vValue); // rootDict.Add(vKey, vValue);
} // }
else // else
{ // {
rootDict[vKey] = vValue; // rootDict[vKey] = vValue;
} // }
// VersionCode // // VersionCode
var vCodeKey = "CFBundleVersion"; // var vCodeKey = "CFBundleVersion";
var vCodeValue = new PlistElementString(buildInfo.version_code.ToString()); // var vCodeValue = new PlistElementString(buildInfo.versionCode.ToString());
if (!rootDict.ContainsKey(vCodeKey)) // if (!rootDict.ContainsKey(vCodeKey))
{ // {
rootDict.Add(vCodeKey, vCodeValue); // rootDict.Add(vCodeKey, vCodeValue);
} // }
else // else
{ // {
rootDict[vCodeKey] = vCodeValue; // rootDict[vCodeKey] = vCodeValue;
} // }
// 数美SDK会使用位置必须加入这个说明 // // 数美SDK会使用位置必须加入这个说明
var localtionKey = "NSLocationWhenInUseUsageDescription"; // var localtionKey = "NSLocationWhenInUseUsageDescription";
var localtionValue = new PlistElementString("We use your location to give you a better localization."); // var localtionValue = new PlistElementString("We use your location to give you a better localization.");
if (!rootDict.ContainsKey(localtionKey)) // if (!rootDict.ContainsKey(localtionKey))
{ // {
rootDict.Add(localtionKey, localtionValue); // rootDict.Add(localtionKey, localtionValue);
} // }
else // else
{ // {
rootDict[localtionKey] = localtionValue; // rootDict[localtionKey] = localtionValue;
} // }
// 提审提示缺少出口合规证明,这里直接设置为false即可 // // 提审提示缺少出口合规证明,这里直接设置为false即可
var encryptionKey = "ITSAppUsesNonExemptEncryption"; // var encryptionKey = "ITSAppUsesNonExemptEncryption";
var encryptionValue = new PlistElementBoolean(false); // var encryptionValue = new PlistElementBoolean(false);
if (!rootDict.ContainsKey(encryptionKey)) // if (!rootDict.ContainsKey(encryptionKey))
{ // {
rootDict.Add(encryptionKey, encryptionValue); // rootDict.Add(encryptionKey, encryptionValue);
} // }
else // else
{ // {
rootDict[encryptionKey] = encryptionValue; // rootDict[encryptionKey] = encryptionValue;
} // }
pList.WriteToFile(pListPath); // pList.WriteToFile(pListPath);
pbxProject.WriteToFile(path); // pbxProject.WriteToFile(path);
} // }
//添加系统lib方法 // //添加系统lib方法
static void AddSystemLibReferenceToProject(PBXProject pbxProject, string targetGuid, string lib) // static void AddSystemLibReferenceToProject(PBXProject pbxProject, string targetGuid, string lib)
{ // {
var fileGuid = pbxProject.AddFile("usr/lib/" + lib, "Frameworks/" + lib, PBXSourceTree.Sdk); // var fileGuid = pbxProject.AddFile("usr/lib/" + lib, "Frameworks/" + lib, PBXSourceTree.Sdk);
pbxProject.AddFileToBuild(targetGuid, fileGuid); // pbxProject.AddFileToBuild(targetGuid, fileGuid);
} // }
/// <summary> // /// <summary>
/// Archive // /// Archive
/// </summary> // /// </summary>
static bool Archive(BuildInfo buildInfo) // static bool Archive(BuildInfo buildInfo)
{ // {
Debug.Log("[bfinfo]正在archive..."); // Debug.Log("[bfinfo]正在archive...");
var result = true; // var result = true;
var xCodeProjectPath = buildInfo.IsDevChannel() ? devXCodePath : releaseXCodePath; // var xCodeProjectPath = buildInfo.IsDevChannel() ? devXCodePath : releaseXCodePath;
var archivePath = xCodeProjectPath + "/build/archive/Unity-iPhone.xcarchive"; // var archivePath = xCodeProjectPath + "/build/archive/Unity-iPhone.xcarchive";
var args = string.Format("archive -scheme Unity-iPhone -configuration Release -archivePath {0}", archivePath); // var args = string.Format("archive -scheme Unity-iPhone -configuration Release -archivePath {0}", archivePath);
BFEditorUtils.RunCommond("xcodebuild", args, xCodeProjectPath, // BFEditorUtils.RunCommond("xcodebuild", args, xCodeProjectPath,
(info) => // (info) =>
{ // {
Debug.Log(info); // Debug.Log(info);
}, // },
(error) => // (error) =>
{ // {
if (error.Contains("ARCHIVE FAILED")) // 失败标志 // if (error.Contains("ARCHIVE FAILED")) // 失败标志
{ // {
result = false; // result = false;
} // }
Debug.LogError("[bferror] " + error); // Debug.LogError("[bferror] " + error);
} // }
); // );
return result; // return result;
} // }
/// <summary> // /// <summary>
/// 导出ipa // /// 导出ipa
/// </summary> // /// </summary>
static bool ExportIpa(BuildInfo buildInfo) // static bool ExportIpa(BuildInfo buildInfo)
{ // {
Debug.Log("[bfinfo]正在导出ipa..."); // Debug.Log("[bfinfo]正在导出ipa...");
var result = false; // var result = false;
var xCodeProjectPath = buildInfo.IsDevChannel() ? devXCodePath : releaseXCodePath; // var xCodeProjectPath = buildInfo.IsDevChannel() ? devXCodePath : releaseXCodePath;
string exportPListPath; // string exportPListPath;
if (buildInfo.IsPublish()) // if (buildInfo.IsPublish())
{ // {
exportPListPath = publishOptionsPListPath; // exportPListPath = publishOptionsPListPath;
} // }
else // else
{ // {
exportPListPath = buildInfo.IsDevChannel() ? devOptionsPListPath : releaseOptionsPListPath; // exportPListPath = buildInfo.IsDevChannel() ? devOptionsPListPath : releaseOptionsPListPath;
} // }
var ipaPath = xCodeProjectPath + "/build/ipa"; // var ipaPath = xCodeProjectPath + "/build/ipa";
var archivePath = xCodeProjectPath + "/build/archive/Unity-iPhone.xcarchive"; // var archivePath = xCodeProjectPath + "/build/archive/Unity-iPhone.xcarchive";
var args = string.Format("-exportArchive -archivePath {0} -exportPath {1} -exportOptionsPlist {2} -allowProvisioningUpdates", archivePath, ipaPath, exportPListPath); // var args = string.Format("-exportArchive -archivePath {0} -exportPath {1} -exportOptionsPlist {2} -allowProvisioningUpdates", archivePath, ipaPath, exportPListPath);
BFEditorUtils.RunCommond("xcodebuild", args, null, // BFEditorUtils.RunCommond("xcodebuild", args, null,
(info) => // (info) =>
{ // {
if(info.Contains("EXPORT SUCCEEDED")) // if(info.Contains("EXPORT SUCCEEDED"))
{ // {
result = true; // result = true;
} // }
}, // },
(error) => // (error) =>
{ // {
} // }
); // );
return result; // return result;
} // }
/// <summary> // /// <summary>
/// 远程打包签名ipa时需要钥匙串权限 // /// 远程打包签名ipa时需要钥匙串权限
/// </summary> // /// </summary>
static void UnlockKeyChain() // static void UnlockKeyChain()
{ // {
BFEditorUtils.RunCommond("security", "-v unlock-keychain -p '123456' /Users/aoddabao/Library/Keychains/login.keychain-db", null, // BFEditorUtils.RunCommond("security", "-v unlock-keychain -p '123456' /Users/aoddabao/Library/Keychains/login.keychain-db", null,
(msg) => // (msg) =>
{ // {
Debug.Log(msg); // Debug.Log(msg);
}, // },
(msg) => // (msg) =>
{ // {
Debug.LogError(msg); // Debug.LogError(msg);
} // }
); // );
} // }
#endif // #endif
} // }
} // }

View File

@ -85,6 +85,9 @@ namespace BFEditor
{ {
//加载lua配置测试 //加载lua配置测试
LuaEnv env = new LuaEnv(); LuaEnv env = new LuaEnv();
env.DoString(@"
print(' Lua : ' .. _VERSION) -- Lua 5.1
");
env.AddLoader((ref string scriptPath) => env.AddLoader((ref string scriptPath) =>
{ {
var text = LoadGameLuaScriptText(scriptPath, isDeveloper); var text = LoadGameLuaScriptText(scriptPath, isDeveloper);
@ -136,58 +139,58 @@ namespace BFEditor
var configFileInfos = configDirInfo.GetFiles(suffix, SearchOption.TopDirectoryOnly); var configFileInfos = configDirInfo.GetFiles(suffix, SearchOption.TopDirectoryOnly);
// 检查棋盘文件格式 // 检查棋盘文件格式
checkBoard("chapter_board", env, sb); // checkBoard("chapter_board", env, sb);
checkBoard("chapter_board_bossrush", env, sb); // checkBoard("chapter_board_bossrush", env, sb);
checkBoard("chapter_board_daily_challenge", env, sb); // checkBoard("chapter_board_daily_challenge", env, sb);
checkBoard("chapter_board_dungeon_armor", env, sb); // checkBoard("chapter_board_dungeon_armor", env, sb);
checkBoard("chapter_board_dungeon_equip", env, sb); // checkBoard("chapter_board_dungeon_equip", env, sb);
checkBoard("chapter_board_dungeon_gold", env, sb); // checkBoard("chapter_board_dungeon_gold", env, sb);
checkBoard("chapter_board_dungeon_shards", env, sb); // checkBoard("chapter_board_dungeon_shards", env, sb);
checkBoard("chapter_board_rune", env, sb); // checkBoard("chapter_board_rune", env, sb);
checkBoard("activity_pvp_board", env, sb); // checkBoard("activity_pvp_board", env, sb);
checkBoard("arena_board", env, sb); // checkBoard("arena_board", env, sb);
// 检查monster // 检查monster
string monsterConfigListLua = "{"; // string monsterConfigListLua = "{";
foreach (var file in configFileInfos) // foreach (var file in configFileInfos)
{ // {
var fileName = file.Name.ToLower(); // var fileName = file.Name.ToLower();
if(fileName.Contains("monster_")) // if(fileName.Contains("monster_"))
{ // {
monsterConfigListLua += "'" + fileName.Replace(".lua", "").Replace(".bytes", "") + "',"; // monsterConfigListLua += "'" + fileName.Replace(".lua", "").Replace(".bytes", "") + "',";
} // }
} // }
monsterConfigListLua += "}"; // monsterConfigListLua += "}";
var luaScriptString = "local ids = {}\n local MONSTER_LIST = " + monsterConfigListLua + "\n"; // var luaScriptString = "local ids = {}\n local MONSTER_LIST = " + monsterConfigListLua + "\n";
luaScriptString += @"local str = {} // luaScriptString += @"local str = {}
for i, name in ipairs(MONSTER_LIST) do // for i, name in ipairs(MONSTER_LIST) do
if name ~= 'monster_base' and name ~= 'monster_position' and name ~= 'monster_position_base' then // if name ~= 'monster_base' and name ~= 'monster_position' and name ~= 'monster_position_base' then
local data = require('app/config/' .. name).data // local data = require('app/config/' .. name).data
for k, v in pairs(data) do // for k, v in pairs(data) do
if ids[k] then // if ids[k] then
table.insert(str, name .. '和' .. ids[k] .. 'mosnter id:' .. k) // table.insert(str, name .. '和' .. ids[k] .. '存在相同的mosnter id:' .. k)
end // end
ids[k] = name // ids[k] = name
end // end
end // end
end // end
if #str > 0 then // if #str > 0 then
return table.concat(str, '\n'); // return table.concat(str, '\n');
end // end
return ''"; // return ''";
var resultStr = env.DoString(luaScriptString); // var resultStr = env.DoString(luaScriptString);
if (resultStr.Length > 0) // if (resultStr.Length > 0)
{ // {
foreach(var strObj in resultStr) // foreach(var strObj in resultStr)
{ // {
var str = Convert.ToString(strObj); // var str = Convert.ToString(strObj);
if(!String.IsNullOrEmpty(str)) // if(!String.IsNullOrEmpty(str))
{ // {
sb.Append(str + "\n"); // sb.Append(str + "\n");
} // }
} // }
} // }
// 检查怪物的坐标信息 // 检查怪物的坐标信息
// var luaScriptString2 = @"local MONSTER_POSITION_KEY = { 'monster_1','monster_2','monster_3','monster_4','monster_5','monster_6','monster_7','monster_8','monster_9','monster_10','monster_11','monster_12'} // var luaScriptString2 = @"local MONSTER_POSITION_KEY = { 'monster_1','monster_2','monster_3','monster_4','monster_5','monster_6','monster_7','monster_8','monster_9','monster_10','monster_11','monster_12'}
// local list = {'enemy_id_1', 'enemy_id_2', 'enemy_id_3'} // local list = {'enemy_id_1', 'enemy_id_2', 'enemy_id_3'}

View File

@ -2,7 +2,7 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEditor; using UnityEditor;
using UnityEditor.Experimental.SceneManagement;
namespace BFEditor.Resource namespace BFEditor.Resource
{ {
@ -19,7 +19,7 @@ namespace BFEditor.Resource
void OnEnable() void OnEnable()
{ {
PrefabStage currentPrefabStage = PrefabStageUtility.GetCurrentPrefabStage(); UnityEditor.SceneManagement.PrefabStage currentPrefabStage = UnityEditor.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage();
Transform tran; Transform tran;
if (currentPrefabStage == null) if (currentPrefabStage == null)
tran = Selection.activeTransform; tran = Selection.activeTransform;

View File

@ -92,7 +92,7 @@ namespace BFEditor
} }
else else
{ {
var currentPrefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage(); var currentPrefabStage = UnityEditor.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage();
if (currentPrefabStage != null) //当前处于prefab编辑模式 if (currentPrefabStage != null) //当前处于prefab编辑模式
{ {
var prefabRoot = currentPrefabStage.prefabContentsRoot; var prefabRoot = currentPrefabStage.prefabContentsRoot;

View File

@ -55,7 +55,7 @@ public class JenkinsAdapter {
// 商品名称 // 商品名称
PlayerSettings.productName = "Knights Combo"; PlayerSettings.productName = "Knights Combo";
// BuildType设置dev/release // BuildType设置dev/release
EditorUserBuildSettings.iOSBuildConfigType = iOSBuildType.Release; EditorUserBuildSettings.iOSXcodeBuildConfig = XcodeBuildConfig.Release;
EditorUserBuildSettings.development = false; EditorUserBuildSettings.development = false;
// 使用IL2CPP // 使用IL2CPP
var scriptImp = ScriptingImplementation.IL2CPP; var scriptImp = ScriptingImplementation.IL2CPP;

View File

@ -68,8 +68,9 @@ namespace BFEditor
"TMPro.SortingLayerHelper", "TMPro.SortingLayerHelper",
"UnityEngine.CloudStreaming", "UnityEngine.CloudStreaming",
"BFEditor.EditorBattleRoleAttackOperate", "BFEditor.EditorBattleRoleAttackOperate",
"UnityEngine.QualitySettings",
"IronSourceBannerEvents", "IronSourceEvents", "IronSourceInterstitialEvents", "IronSourceRewardedVideoEvents", "IronSourceBannerEvents", "IronSourceEvents", "IronSourceInterstitialEvents", "IronSourceRewardedVideoEvents",
"IronSourceAdQualityManifestTools" "IronSourceAdQualityManifestTools", "TradplusSDK"
}; };
static bool isExcluded(Type type) static bool isExcluded(Type type)
@ -77,7 +78,7 @@ namespace BFEditor
var fullName = type.FullName; var fullName = type.FullName;
for (int i = 0; i < exclude.Count; i++) for (int i = 0; i < exclude.Count; i++)
{ {
if (!string.IsNullOrEmpty(fullName) && fullName.Contains(exclude[i])) if (fullName != null && fullName.Contains(exclude[i]))
{ {
return true; return true;
} }
@ -93,13 +94,13 @@ namespace BFEditor
List<string> namespaces = new List<string>() // 在这里添加名字空间 List<string> namespaces = new List<string>() // 在这里添加名字空间
{ {
"BF", "BF",
"UnityEngine", // "UnityEngine",
"UnityEngine.UI", // "UnityEngine.UI",
"UnityEngine.U2D", // "UnityEngine.U2D",
"UnityEngine.Rendering.Universal", // "UnityEngine.Rendering.Universal",
"TMPro", // "TMPro",
"DG.Tweening", // "DG.Tweening",
"DG.Tweening.Core", // "DG.Tweening.Core",
}; };
var unityTypes = (from assembly in AppDomain.CurrentDomain.GetAssemblies() var unityTypes = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
where !(assembly.ManifestModule is System.Reflection.Emit.ModuleBuilder) where !(assembly.ManifestModule is System.Reflection.Emit.ModuleBuilder)
@ -113,8 +114,8 @@ namespace BFEditor
}; };
var customTypes = (from assembly in customAssemblys.Select(s => Assembly.Load(s)) var customTypes = (from assembly in customAssemblys.Select(s => Assembly.Load(s))
from type in assembly.GetExportedTypes() from type in assembly.GetExportedTypes()
where type.Namespace == null || !type.Namespace.StartsWith("XLua") where type.Namespace == null || !type.Namespace.StartsWith("XLua") && !isExcluded(type)
&& type.BaseType != typeof(MulticastDelegate) && !type.IsInterface && !type.IsEnum && !isExcluded(type) && type.BaseType != typeof(MulticastDelegate) && !type.IsInterface && !type.IsEnum
select type); select type);
var otherTypes = new List<Type>() { var otherTypes = new List<Type>() {
@ -143,20 +144,31 @@ namespace BFEditor
typeof(System.Collections.Generic.List<TMPro.TMP_FontAsset>), typeof(System.Collections.Generic.List<TMPro.TMP_FontAsset>),
typeof(System.Collections.Generic.List<UnityEngine.Camera>), typeof(System.Collections.Generic.List<UnityEngine.Camera>),
typeof(System.Collections.Generic.List<System.Collections.Generic.List<string>>), typeof(System.Collections.Generic.List<System.Collections.Generic.List<string>>),
typeof(System.Collections.Generic.List<BF.BFFinger>),
typeof(DG.Tweening.Core.TweenerCore<UnityEngine.Color, UnityEngine.Color, DG.Tweening.Plugins.Options.ColorOptions>), typeof(DG.Tweening.Core.TweenerCore<UnityEngine.Color, UnityEngine.Color, DG.Tweening.Plugins.Options.ColorOptions>),
typeof(DG.Tweening.Core.TweenerCore<UnityEngine.Vector2, UnityEngine.Vector2, DG.Tweening.Plugins.Options.VectorOptions>), typeof(DG.Tweening.Core.TweenerCore<UnityEngine.Vector2, UnityEngine.Vector2, DG.Tweening.Plugins.Options.VectorOptions>),
typeof(System.Action<string>), typeof(System.Action<string>),
typeof(System.Action<string, UnityEngine.Object>),
typeof(System.Action<string, UnityEngine.GameObject>),
typeof(UnityEngine.Camera),
typeof(UnityEngine.Camera.GateFitMode),
typeof(UnityEngine.Camera.GateFitParameters),
typeof(UnityEngine.Camera.StereoscopicEye),
typeof(UnityEngine.Camera.MonoOrStereoscopicEye),
typeof(UnityEngine.Camera.FieldOfViewAxis), typeof(UnityEngine.Camera.FieldOfViewAxis),
typeof(UnityEngine.Camera.RenderRequest),
typeof(UnityEngine.Camera.RenderRequestMode), typeof(UnityEngine.Camera.RenderRequestMode),
typeof(UnityEngine.Camera.RenderRequestOutputSpace), typeof(UnityEngine.Camera.RenderRequestOutputSpace),
typeof(UnityEngine.Camera.RenderRequest),
typeof(UnityEngine.Camera.SceneViewFilterMode),
typeof(UnityEngine.TextCore.FaceInfo), typeof(UnityEngine.TextCore.FaceInfo),
typeof(UnityEngine.Rendering.LightShadowResolution), typeof(UnityEngine.Rendering.LightShadowResolution),
typeof(UnityEngine.RenderTextureFormat), typeof(UnityEngine.RenderTextureFormat),
typeof(UnityEngine.RenderTextureReadWrite), typeof(UnityEngine.RenderTextureReadWrite),
typeof(UnityEngine.RigidbodyConstraints), typeof(UnityEngine.RigidbodyConstraints),
typeof(UnityEngine.TransparencySortMode), typeof(UnityEngine.TransparencySortMode),
typeof(UnityEngine.SystemInfo),
typeof(UnityEngine.Object), typeof(UnityEngine.Object),
typeof(UnityEngine.Rect), typeof(UnityEngine.Rect),
typeof(UnityEngine.Vector2), typeof(UnityEngine.Vector2),
@ -263,11 +275,6 @@ namespace BFEditor
typeof(UnityEngine.Canvas), typeof(UnityEngine.Canvas),
typeof(UnityEngine.CanvasGroup), typeof(UnityEngine.CanvasGroup),
typeof(UnityEngine.CanvasRenderer), typeof(UnityEngine.CanvasRenderer),
typeof(UnityEngine.Camera),
typeof(UnityEngine.Camera.GateFitMode),
typeof(UnityEngine.Camera.GateFitParameters),
typeof(UnityEngine.Camera.StereoscopicEye),
typeof(UnityEngine.Camera.MonoOrStereoscopicEye),
typeof(UnityEngine.LineRenderer), typeof(UnityEngine.LineRenderer),
typeof(UnityEngine.Texture2D), typeof(UnityEngine.Texture2D),
typeof(UnityEngine.Texture2D.EXRFlags), typeof(UnityEngine.Texture2D.EXRFlags),
@ -294,7 +301,13 @@ namespace BFEditor
typeof(UnityEngine.LightProbes), typeof(UnityEngine.LightProbes),
typeof(UnityEngine.ReflectionProbe), typeof(UnityEngine.ReflectionProbe),
typeof(UnityEngine.BatteryStatus), typeof(UnityEngine.BatteryStatus),
typeof(UnityEngine.SystemInfo),
typeof(UnityEngine.Rigidbody),
typeof(UnityEngine.SphereCollider),
typeof(UnityEngine.ScriptableObject),
typeof(UnityEngine.Physics),
typeof(UnityEngine.PhysicMaterial),
typeof(UnityEngine.MeshCollider),
typeof(UnityEngine.UI.CanvasScaler), typeof(UnityEngine.UI.CanvasScaler),
typeof(UnityEngine.UI.Dropdown), typeof(UnityEngine.UI.Dropdown),
typeof(UnityEngine.UI.Dropdown.OptionData), typeof(UnityEngine.UI.Dropdown.OptionData),
@ -316,6 +329,7 @@ namespace BFEditor
typeof(UnityEngine.UI.InputField), typeof(UnityEngine.UI.InputField),
typeof(UnityEngine.UI.InputField.ContentType), typeof(UnityEngine.UI.InputField.ContentType),
typeof(UnityEngine.UI.InputField.InputType), typeof(UnityEngine.UI.InputField.InputType),
typeof(UnityEngine.UI.InputField.EndEditEvent),
typeof(UnityEngine.UI.InputField.CharacterValidation), typeof(UnityEngine.UI.InputField.CharacterValidation),
typeof(UnityEngine.UI.InputField.LineType), typeof(UnityEngine.UI.InputField.LineType),
typeof(UnityEngine.UI.InputField.SubmitEvent), typeof(UnityEngine.UI.InputField.SubmitEvent),
@ -347,7 +361,7 @@ namespace BFEditor
typeof(UnityEngine.UI.GridLayoutGroup.Constraint), typeof(UnityEngine.UI.GridLayoutGroup.Constraint),
typeof(UnityEngine.UI.VerticalLayoutGroup), typeof(UnityEngine.UI.VerticalLayoutGroup),
typeof(UnityEngine.UI.LayoutGroup), typeof(UnityEngine.UI.LayoutGroup),
typeof(UnityEngine.GUIUtility), typeof(UnityEngine.U2D.SpriteAtlas),
// spine // spine
typeof(Spine.TrackEntry), typeof(Spine.TrackEntry),
@ -365,12 +379,14 @@ namespace BFEditor
typeof(Spine.Unity.SkeletonAnimation), typeof(Spine.Unity.SkeletonAnimation),
typeof(Spine.Unity.SkeletonDataAsset), typeof(Spine.Unity.SkeletonDataAsset),
typeof(Spine.Unity.MeshGenerator), typeof(Spine.Unity.MeshGenerator),
typeof(Spine.MeshAttachment),
typeof(Spine.Unity.MeshGenerator.Settings), typeof(Spine.Unity.MeshGenerator.Settings),
typeof(Spine.Unity.SkeletonRenderer), typeof(Spine.Unity.SkeletonRenderer),
typeof(Spine.Unity.SkeletonRenderer.SpriteMaskInteractionMaterials), typeof(Spine.Unity.SkeletonRenderer.SpriteMaskInteractionMaterials),
typeof(Spine.Unity.BoneFollower), typeof(Spine.Unity.BoneFollower),
typeof(Spine.Unity.BoneFollowerGraphic), typeof(Spine.Unity.BoneFollowerGraphic),
typeof(Spine.Unity.BoneFollower.AxisOrientation), typeof(Spine.Unity.BoneFollower.AxisOrientation),
typeof(Spine.Unity.SkeletonGraphic.LayoutMode),
// TextMeshPro // TextMeshPro
typeof(TMPro.TextAlignmentOptions), typeof(TMPro.TextAlignmentOptions),
@ -396,6 +412,14 @@ namespace BFEditor
typeof(TMP_AnimationCurve), typeof(TMP_AnimationCurve),
typeof(TMP_Curve), typeof(TMP_Curve),
// 数数
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI),
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI.TATimeZone),
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI.TAMode),
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI.NetworkType),
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI.Token),
typeof(ThinkingAnalytics.TDPresetProperties),
//DOTween //DOTween
typeof(DG.Tweening.AutoPlay), typeof(DG.Tweening.AutoPlay),
typeof(DG.Tweening.AxisConstraint), typeof(DG.Tweening.AxisConstraint),
@ -408,7 +432,6 @@ namespace BFEditor
typeof(DG.Tweening.ScrambleMode), typeof(DG.Tweening.ScrambleMode),
typeof(DG.Tweening.TweenType), typeof(DG.Tweening.TweenType),
typeof(DG.Tweening.UpdateType), typeof(DG.Tweening.UpdateType),
typeof(DG.Tweening.DOTween), typeof(DG.Tweening.DOTween),
typeof(DG.Tweening.Core.DOTweenComponent), typeof(DG.Tweening.Core.DOTweenComponent),
typeof(DG.Tweening.Core.TweenerCore<UnityEngine.Vector3, UnityEngine.Vector3[], DG.Tweening.Plugins.Options.Vector3ArrayOptions>), typeof(DG.Tweening.Core.TweenerCore<UnityEngine.Vector3, UnityEngine.Vector3[], DG.Tweening.Plugins.Options.Vector3ArrayOptions>),
@ -431,13 +454,11 @@ namespace BFEditor
typeof(DG.Tweening.ShortcutExtensions), typeof(DG.Tweening.ShortcutExtensions),
typeof(DG.Tweening.DOTweenModuleUI), typeof(DG.Tweening.DOTweenModuleUI),
// 数数 // BestHTTP
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI.TATimeZone),
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI.TAMode),
typeof(ThinkingAnalytics.ThinkingAnalyticsAPI.NetworkType),
typeof(Http.RequestState), typeof(Http.RequestState),
typeof(BestHTTP.HTTPRequest),
typeof(BestHTTP.HTTPResponse), typeof(BestHTTP.HTTPResponse),
typeof(BestHTTP.Connections.HTTP2.HTTP2Response),
typeof(BestHTTP.Forms.HTTPUrlEncodedForm), typeof(BestHTTP.Forms.HTTPUrlEncodedForm),
typeof(BestHTTP.Forms.HTTPFormBase), typeof(BestHTTP.Forms.HTTPFormBase),
@ -448,13 +469,36 @@ namespace BFEditor
typeof(UnityEngine.Purchasing.ProductType), typeof(UnityEngine.Purchasing.ProductType),
typeof(BF.MonoSingleton<BF.BFMain>), typeof(BF.MonoSingleton<BF.BFMain>),
typeof(BF.MonoSingleton<AdManager>),
typeof(BF.BFSlider.FillDirection), typeof(BF.BFSlider.FillDirection),
typeof(BF.ScrollRectBaseOld.MovementType), typeof(BF.ScrollRectBaseOld.MovementType),
typeof(BF.ScrollRectBaseOld.ScrollbarVisibility), typeof(BF.ScrollRectBaseOld.ScrollbarVisibility),
typeof(BF.NetServiceType), typeof(BF.NetServiceType),
typeof(BF.NetIncomingMessageType), typeof(BF.NetIncomingMessageType),
typeof(BF.BFGridLayout.Corner),
typeof(BF.BFGridLayout.Constraint), // Touch
typeof(BF.BFEvent<System.Collections.Generic.List<BF.BFFinger>>),
typeof(BF.BFEvent<BF.SelectEventType, BF.BFFinger>),
typeof(BF.BFEvent<BF.TouchEventType, BF.BFFinger>),
typeof(BF.TouchEventType),
typeof(BF.SelectEventType),
typeof(BF.NativeCore.ThirdPlatform.FacebookSdk),
typeof(BF.NativeCore.ThirdPlatform.AppsFlyerSdk),
typeof(AdManager),
// 震动插件
// typeof(Lofelt.NiceVibrations.HapticPatterns),
// typeof(Lofelt.NiceVibrations.LofeltHaptics),
// typeof(Lofelt.NiceVibrations.HapticPatterns.PresetType),
typeof(UnityEngine.Purchasing.Security.AppleStoreKitTestTangle),
typeof(UnityEngine.Purchasing.Security.AppleTangle),
typeof(UnityEngine.SignInWithApple.SignInWithApple.CallbackArgs),
typeof(UnityEngine.SignInWithApple.SignInWithAppleEvent),
typeof(UnityEngine.SignInWithApple.SignInWithApple),
typeof(UnityEngine.SignInWithApple.UserInfo),
typeof(BF.EnumFlagsAttribute),
}; };
return unityTypes.Concat(customTypes).Concat(otherTypes); return unityTypes.Concat(customTypes).Concat(otherTypes);
} }
@ -565,11 +609,9 @@ namespace BFEditor
new List<string>(){"UnityEngine.AudioSource", "SetGamepadSpeakerMixLevelDefault", "System.Int32"}, new List<string>(){"UnityEngine.AudioSource", "SetGamepadSpeakerMixLevelDefault", "System.Int32"},
new List<string>(){"UnityEngine.AudioSource", "GamepadSpeakerSupportsOutputType", "UnityEngine.GamepadSpeakerOutputType"}, new List<string>(){"UnityEngine.AudioSource", "GamepadSpeakerSupportsOutputType", "UnityEngine.GamepadSpeakerOutputType"},
new List<string>(){"UnityEngine.AudioSource", "gamepadSpeakerOutputType",}, new List<string>(){"UnityEngine.AudioSource", "gamepadSpeakerOutputType",},
new List<string>(){"UnityEngine.Handheld", "SetActivityIndicatorStyle", "UnityEngine.AndroidActivityIndicatorStyle"},
new List<string>(){"UnityEngine.Handheld", "SetActivityIndicatorStyle", "UnityEngine.iOS.ActivityIndicatorStyle"},
new List<string>(){"ThinkingAnalytics.ThinkingAnalyticsAPI", "onPostProcessBuild", "UnityEditor.BuildTarget", "System.String"}, new List<string>(){"ThinkingAnalytics.ThinkingAnalyticsAPI", "onPostProcessBuild", "UnityEditor.BuildTarget", "System.String"},
new List<string>(){"Spine.Unity.SkeletonRenderer", "EditorUpdateMeshFilterHideFlags"},
new List<string>(){"Spine.Unity.SkeletonRenderer", "fixPrefabOverrideViaMeshFilter"},
new List<string>(){"Spine.Unity.SkeletonRenderer", "fixPrefabOverrideViaMeshFilterGlobal"},
new List<string>(){"Spine.Unity.SkeletonDataAsset", "errorIfSkeletonFileNullGlobal"},
new List<string>(){"FBWindowsPhysicalGamepadManager", "state"}, new List<string>(){"FBWindowsPhysicalGamepadManager", "state"},
new List<string>(){"IronSourceBannerEvents", "onAdLoaded", "System.String"}, new List<string>(){"IronSourceBannerEvents", "onAdLoaded", "System.String"},
new List<string>(){"IronSourceBannerEvents", "onAdLoadFailed", "System.String"}, new List<string>(){"IronSourceBannerEvents", "onAdLoadFailed", "System.String"},
@ -638,6 +680,18 @@ namespace BFEditor
new List<string>(){"IronSourceRewardedVideoEvents", "onAdUnavailable"}, new List<string>(){"IronSourceRewardedVideoEvents", "onAdUnavailable"},
new List<string>(){"IronSourceRewardedVideoEvents", "onAdLoadFailed", "System.String"}, new List<string>(){"IronSourceRewardedVideoEvents", "onAdLoadFailed", "System.String"},
new List<string>(){"IronSourceRewardedVideoEvents", "onAdReady", "System.String"}, new List<string>(){"IronSourceRewardedVideoEvents", "onAdReady", "System.String"},
new List<string>(){"UnityEngine.Rendering.Universal.ShaderUtils", "GetShaderGUID", "UnityEngine.Rendering.Universal.ShaderPathID"},
new List<string>(){"Spine.Unity.SkeletonRenderer", "EditorUpdateMeshFilterHideFlags"},
new List<string>(){"Spine.Unity.SkeletonRenderer", "fixPrefabOverrideViaMeshFilter"},
new List<string>(){"Spine.Unity.SkeletonRenderer", "fixPrefabOverrideViaMeshFilterGlobal"},
new List<string>(){"Spine.Unity.SkeletonDataAsset", "errorIfSkeletonFileNullGlobal"},
new List<string>(){"Spine.Unity.SkeletonGraphic", "ResetRectToReferenceRectSize"},
new List<string>(){"Spine.Unity.SkeletonGraphic", "GetReferenceRectSize"},
new List<string>(){"Spine.Unity.SpineHandles", "DrawReferenceRect", "Spine.Unity.SkeletonGraphic", "UnityEngine.Color"},
new List<string>(){"Spine.Unity.SkeletonGraphic", "EditReferenceRect"},
new List<string>(){"Spine.Unity.SkeletonGraphic", "RectTransformSize"},
new List<string>(){"Spine.Unity.SkeletonGraphic", "GetPivotOffset"},
new List<string>(){"Spine.Unity.SkeletonGraphic", "GetScaledPivotOffset"},
}; };
static bool hasGenericParameter(Type type) static bool hasGenericParameter(Type type)

View File

@ -14,19 +14,26 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
defaultScale: 0.01 defaultScale: 0.01
defaultMix: 0.2 defaultMix: 0.2
defaultShader: BF/Spine/Skeleton defaultShader: Spine/Skeleton
defaultZSpacing: 0 defaultZSpacing: 0
defaultInstantiateLoop: 1 defaultInstantiateLoop: 1
defaultPhysicsPositionInheritance: {x: 1, y: 1}
defaultPhysicsRotationInheritance: 1
showHierarchyIcons: 1 showHierarchyIcons: 1
reloadAfterPlayMode: 1
setTextureImporterSettings: 1 setTextureImporterSettings: 1
textureSettingsReference: Assets/ThirdParty/Spine/Editor/spine-unity/Editor/ImporterPresets/PMATexturePreset.preset textureSettingsReference: Assets/ThirdParty/Spine/Editor/spine-unity/Editor/ImporterPresets/PMATexturePreset.preset
fixPrefabOverrideViaMeshFilter: 0
removePrefabPreviewMeshes: 0
blendModeMaterialMultiply: {fileID: 0} blendModeMaterialMultiply: {fileID: 0}
blendModeMaterialScreen: {fileID: 0} blendModeMaterialScreen: {fileID: 0}
blendModeMaterialAdditive: {fileID: 0} blendModeMaterialAdditive: {fileID: 0}
atlasTxtImportWarning: 1 atlasTxtImportWarning: 1
textureImporterWarning: 1 textureImporterWarning: 1
componentMaterialWarning: 1 componentMaterialWarning: 1
skeletonDataAssetNoFileError: 1
autoReloadSceneSkeletons: 1 autoReloadSceneSkeletons: 1
handleScale: 1 handleScale: 1
mecanimEventIncludeFolderName: 1 mecanimEventIncludeFolderName: 1
timelineDefaultMixDuration: 0
timelineUseBlendDuration: 1 timelineUseBlendDuration: 1

View File

@ -78,6 +78,7 @@ namespace BFEditor
psi.RedirectStandardOutput = true; //由调用程序获取输出信息 psi.RedirectStandardOutput = true; //由调用程序获取输出信息
psi.RedirectStandardError = true; //重定向标准错误输出 psi.RedirectStandardError = true; //重定向标准错误输出
psi.CreateNoWindow = true; //不显示程序窗口 psi.CreateNoWindow = true; //不显示程序窗口
psi.StandardOutputEncoding = System.Text.Encoding.UTF8; // 核心指定UTF-8解码
p.StartInfo = psi; p.StartInfo = psi;
p.Start(); p.Start();

View File

@ -23,7 +23,8 @@ namespace AudienceNetwork
public partial class AdManager : BF.MonoSingleton<AdManager> public partial class AdManager : BF.MonoSingleton<AdManager>
{ {
private const string Tag = "AdManager:"; private const string Tag = "AdManager:";
private const string Key = "9uHgeBwag3NXva9MC23ToO3q11Ve59bF1uwg4qGltdGmCQ7OSByFZ_3b1ZF7krMlkHQo5gXzIokVDsvg1rwbr-"; // private const string Key = "9uHgeBwag3NXva9MC23ToO3q11Ve59bF1uwg4qGltdGmCQ7OSByFZ_3b1ZF7krMlkHQo5gXzIokVDsvg1rwbr-";
private const string Key = "9uHgeBwag3NXva9MC23ToO3q11Ve59bF1uwg4qGltdGmCQ7OSByFZ_3b1ZF7krMlkHQo5gXzIokVDsvg1rwbr-11";
string bannerAdUnitId = "YOUR_BANNER_AD_UNIT_ID"; // Retrieve the ID from your account string bannerAdUnitId = "YOUR_BANNER_AD_UNIT_ID"; // Retrieve the ID from your account
string adInterstitialUnitId = "YOUR_AD_UNIT_ID"; string adInterstitialUnitId = "YOUR_AD_UNIT_ID";
string adRewardUnitId = "e54f27e345da90df"; string adRewardUnitId = "e54f27e345da90df";

View File

@ -9,9 +9,9 @@ namespace BF
{ {
public class BFThirdReportSDKManager : MonoBehaviour public class BFThirdReportSDKManager : MonoBehaviour
{ {
private ThinkingAnalyticsSdk TASdk = new ThinkingAnalyticsSdk(); // private ThinkingAnalyticsSdk TASdk = new ThinkingAnalyticsSdk();
private AppsFlyerSdk AFSdk = new AppsFlyerSdk(); // private AppsFlyerSdk AFSdk = new AppsFlyerSdk();
private bool isInitAFAdRevenue = false; // private bool isInitAFAdRevenue = false;
void Start() void Start()
{ {
@ -21,147 +21,147 @@ namespace BF
public void Init() public void Init()
{ {
BFLog.Log("TASdk.Init"); BFLog.Log("TASdk.Init");
TASdk.Init(); // TASdk.Init();
AFSdk.Init(); // AFSdk.Init();
} }
// 设置账户id // 设置账户id
public void SetThinkingAnalyticsAccountId(string id) public void SetThinkingAnalyticsAccountId(string id)
{ {
TASdk.SetAccountId(id); // TASdk.SetAccountId(id);
AFSdk.SetTaAccountId(id); // AFSdk.SetTaAccountId(id);
} }
public void InitAppsFlyerAdRevenue() public void InitAppsFlyerAdRevenue()
{ {
if (isInitAFAdRevenue) // if (isInitAFAdRevenue)
{ // {
return; // return;
} // }
isInitAFAdRevenue = true; // isInitAFAdRevenue = true;
AppsFlyerAdRevenue.start(); // AppsFlyerAdRevenue.start();
} }
// 清除账户id // 清除账户id
public void ClearThinkingAnalyticsAccountId() public void ClearThinkingAnalyticsAccountId()
{ {
TASdk.ClearAccountId(); // TASdk.ClearAccountId();
} }
// 数数科技上报 // 数数科技上报
// lua端使用 // lua端使用
public void PostThinkingAnalyticsEvent(string eventName, string data = "") public void PostThinkingAnalyticsEvent(string eventName, string data = "")
{ {
if (string.IsNullOrEmpty(data)) // if (string.IsNullOrEmpty(data))
{ // {
TASdk.Track(eventName, null); // TASdk.Track(eventName, null);
} // }
else // else
{ // {
var properties = JsonConvert.DeserializeObject<Dictionary<string, object>>(data); // var properties = JsonConvert.DeserializeObject<Dictionary<string, object>>(data);
TASdk.Track(eventName, properties); // TASdk.Track(eventName, properties);
} // }
} }
// 数数科技上报 // 数数科技上报
// c#端使用,只上报事件名 // c#端使用,只上报事件名
public void PostThinkingAnalyticsEventName(string eventName) public void PostThinkingAnalyticsEventName(string eventName)
{ {
TASdk.Track(eventName, null); // TASdk.Track(eventName, null);
} }
// 数数科技上报 // 数数科技上报
// c#端使用,上报事件名和参数 // c#端使用,上报事件名和参数
public void PostThinkingAnalyticsEventProperties(string eventName, Dictionary<string, object> properties) public void PostThinkingAnalyticsEventProperties(string eventName, Dictionary<string, object> properties)
{ {
TASdk.Track(eventName, properties); // TASdk.Track(eventName, properties);
} }
public void PostAppsflyerEvent(string eventName, string data = "") public void PostAppsflyerEvent(string eventName, string data = "")
{ {
if (string.IsNullOrEmpty(data)) // if (string.IsNullOrEmpty(data))
{ // {
AFSdk.SendEvent(eventName, null); // AFSdk.SendEvent(eventName, null);
} // }
else // else
{ // {
var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data); // var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
AFSdk.SendEvent(eventName, properties); // AFSdk.SendEvent(eventName, properties);
} // }
} }
public void PostFireBaseEvent(string eventName, string data = "") public void PostFireBaseEvent(string eventName, string data = "")
{ {
if (string.IsNullOrEmpty(data)) // if (string.IsNullOrEmpty(data))
{ // {
return; // return;
} // }
else // else
{ // {
BFMain.Instance.SDKMgr.BFNativeSDKMgr.LogEvent(eventName, data); // BFMain.Instance.SDKMgr.BFNativeSDKMgr.LogEvent(eventName, data);
} // }
} }
// 设置账户id // 设置账户id
public void PostAdjustSimpleTrackEvent(string key) public void PostAdjustSimpleTrackEvent(string key)
{ {
AdjustEvent adjustEvent = new AdjustEvent(key); // AdjustEvent adjustEvent = new AdjustEvent(key);
// BFLog.Log("PostAdjustSimpleTrackEvent"); // // BFLog.Log("PostAdjustSimpleTrackEvent");
Adjust.trackEvent(adjustEvent); // Adjust.trackEvent(adjustEvent);
} }
public void PostAdjustRevenueTrackEvent(string key, double currency, string currencyCode) public void PostAdjustRevenueTrackEvent(string key, double currency, string currencyCode)
{ {
AdjustEvent adjustEvent = new AdjustEvent(key); // AdjustEvent adjustEvent = new AdjustEvent(key);
adjustEvent.setRevenue(currency, currencyCode); // adjustEvent.setRevenue(currency, currencyCode);
// BFLog.Log("PostAdjustRevenueTrackEvent"); // // BFLog.Log("PostAdjustRevenueTrackEvent");
Adjust.trackEvent(adjustEvent); // Adjust.trackEvent(adjustEvent);
} }
public void PostAdjustCallbackTrackEvent(string key, string data = "") public void PostAdjustCallbackTrackEvent(string key, string data = "")
{ {
var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data); // var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
AdjustEvent adjustEvent = new AdjustEvent(key); // AdjustEvent adjustEvent = new AdjustEvent(key);
foreach (var item in properties) // foreach (var item in properties)
{ // {
adjustEvent.addCallbackParameter(item.Key, item.Value); // adjustEvent.addCallbackParameter(item.Key, item.Value);
} // }
// BFLog.Log("PostAdjustCallbackTrackEvent"); // // BFLog.Log("PostAdjustCallbackTrackEvent");
Adjust.trackEvent(adjustEvent); // Adjust.trackEvent(adjustEvent);
} }
public void PostAdjustPartnerTrackEvent(string key, string data = "") public void PostAdjustPartnerTrackEvent(string key, string data = "")
{ {
var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data); // var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
AdjustEvent adjustEvent = new AdjustEvent(key); // AdjustEvent adjustEvent = new AdjustEvent(key);
foreach (var item in properties) // foreach (var item in properties)
{ // {
adjustEvent.addPartnerParameter(item.Key, item.Value); // adjustEvent.addPartnerParameter(item.Key, item.Value);
} // }
// BFLog.Log("PostAdjustPartnerTrackEvent"); // // BFLog.Log("PostAdjustPartnerTrackEvent");
Adjust.trackEvent(adjustEvent); // Adjust.trackEvent(adjustEvent);
} }
public void PostAdjustAdRevenueAppLovinMAX(double revenue, string networkName, string adUnitIdentifier, string placement) public void PostAdjustAdRevenueAppLovinMAX(double revenue, string networkName, string adUnitIdentifier, string placement)
{ {
var adRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceAppLovinMAX); // var adRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceAppLovinMAX);
adRevenue.setRevenue(revenue, "USD"); // adRevenue.setRevenue(revenue, "USD");
adRevenue.setAdRevenueNetwork(networkName); // adRevenue.setAdRevenueNetwork(networkName);
adRevenue.setAdRevenueUnit(adUnitIdentifier); // adRevenue.setAdRevenueUnit(adUnitIdentifier);
adRevenue.setAdRevenuePlacement(placement); // adRevenue.setAdRevenuePlacement(placement);
Adjust.trackAdRevenue(adRevenue); // Adjust.trackAdRevenue(adRevenue);
} }
public void AdjustSetDeviceToken(string token) public void AdjustSetDeviceToken(string token)
{ {
Adjust.setDeviceToken(token); // Adjust.setDeviceToken(token);
} }
public void LogAppsFlyerAdRevenue(int mediationNetwork, string monetizationNetwork, double eventRevenue, string data) public void LogAppsFlyerAdRevenue(int mediationNetwork, string monetizationNetwork, double eventRevenue, string data)
{ {
var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data); // var properties = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
var mediationNetworkType = (AppsFlyerAdRevenueMediationNetworkType)mediationNetwork; // var mediationNetworkType = (AppsFlyerAdRevenueMediationNetworkType)mediationNetwork;
AppsFlyerAdRevenue.logAdRevenue(monetizationNetwork, mediationNetworkType, eventRevenue, "USD", properties); // AppsFlyerAdRevenue.logAdRevenue(monetizationNetwork, mediationNetworkType, eventRevenue, "USD", properties);
} }
} }
} }

View File

@ -62,7 +62,7 @@ namespace BF
public BFPaySDKManager BFPaySDKMgr { get; private set; } public BFPaySDKManager BFPaySDKMgr { get; private set; }
public IAPManager IosPaySDKMgr { get; private set; } public IAPManager IosPaySDKMgr { get; private set; }
// public BFAdmobSDKManager BFAdmobSDKMgr { get; private set; } // public BFAdmobSDKManager BFAdmobSDKMgr { get; private set; }
public BFIronSourceSDKManager BFIronSourceSDKMgr { get; private set; } // public BFIronSourceSDKManager BFIronSourceSDKMgr { get; private set; }
public BFNativeSDKManager BFNativeSDKMgr { get; private set; } public BFNativeSDKManager BFNativeSDKMgr { get; private set; }
public BFThirdReportSDKManager BFThirdReportSDKMgr { get; private set; } public BFThirdReportSDKManager BFThirdReportSDKMgr { get; private set; }
@ -91,12 +91,12 @@ namespace BF
BFPaySDKMgr = sdkGo.AddComponent<BFPaySDKManager>(); BFPaySDKMgr = sdkGo.AddComponent<BFPaySDKManager>();
// 广告 // 广告
// BFAdmobSDKMgr = sdkGo.AddComponent<BFAdmobSDKManager>(); // BFAdmobSDKMgr = sdkGo.AddComponent<BFAdmobSDKManager>();
BFIronSourceSDKMgr = sdkGo.AddComponent<BFIronSourceSDKManager>(); // BFIronSourceSDKMgr = sdkGo.AddComponent<BFIronSourceSDKManager>();
// 三方上报 // // 三方上报
BFThirdReportSDKMgr = sdkGo.AddComponent<BFThirdReportSDKManager>(); BFThirdReportSDKMgr = sdkGo.AddComponent<BFThirdReportSDKManager>();
// native交互管理 // native交互管理
BFNativeSDKMgr = sdkGo.AddComponent<BFNativeSDKManager>(); BFNativeSDKMgr = sdkGo.AddComponent<BFNativeSDKManager>();
IosPaySDKMgr = IAPManager.Instance; // IosPaySDKMgr = IAPManager.Instance;
GameObject.DontDestroyOnLoad(sdkGo); GameObject.DontDestroyOnLoad(sdkGo);
} }

View File

@ -0,0 +1,53 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BF
{
public class BattleControlBg : MonoBehaviour
{
public float speed = 0.0f;
public float endX = 0.0f;
public float resetX = 0.0f;
public int type = 0;
public bool canMove = true;
public void SetPositionByTime(float time)
{
var transformRect = GetComponent<RectTransform>();
transformRect.anchoredPosition = new Vector2(transformRect.anchoredPosition.x + speed * time, transformRect.anchoredPosition.y);
}
void FixedUpdate()
{
if (!canMove) return;
var transformRect = GetComponent<RectTransform>();
if (transformRect.anchoredPosition.x <= endX)
{
transformRect.anchoredPosition = new Vector2(resetX, transformRect.anchoredPosition.y);
}
// if (type == 1)
// {
// speed = BF.BFMain.Instance.BattleMgr.SceneSpeedC;
// }
// else if (type == 2)
// {
// speed = BF.BFMain.Instance.BattleMgr.SceneSpeedM;
// }
// else if (type == 3)
// {
// speed = BF.BFMain.Instance.BattleMgr.SceneSpeedF;
// }
// else if (type == 4)
// {
// speed = BF.BFMain.Instance.BattleMgr.SceneSpeedCould;
// }
// else if (type == 5)
// {
// speed = BF.BFMain.Instance.BattleMgr.SceneSpeedBg;
// }
// transform.Translate(speed * Time.fixedDeltaTime, 0.0f, 0.0f);
transformRect.anchoredPosition = new Vector2(transformRect.anchoredPosition.x + speed * Time.fixedDeltaTime, transformRect.anchoredPosition.y);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1025633752bc248dc9665067e756f919
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -64,11 +64,11 @@ namespace BF
public partial class BFPlatform public partial class BFPlatform
{ {
const String LoginCenterURL = "https://entrance.bigfoot-studio.link"; const String LoginCenterURL = "https://entrance.wdd817.link";
static Dictionary<string, string> BFLoginCenterURLDict = new Dictionary<string, string>() static Dictionary<string, string> BFLoginCenterURLDict = new Dictionary<string, string>()
{ {
// dev // dev
{"com.juzu.b6.dev", "http://game.juzugame.com:3000"}, {"com.juzu.b6.dev", "https://entrance.wdd817.link"},
{"com.juzu.b6.dev.android", "http://game.juzugame.com:3000"}, {"com.juzu.b6.dev.android", "http://game.juzugame.com:3000"},
{"com.juzu.b6.dev.ios", "http://game.juzugame.com:3000"}, {"com.juzu.b6.dev.ios", "http://game.juzugame.com:3000"},
@ -77,7 +77,7 @@ namespace BF
{"com.juzu.b6.release.ios", "http://game.juzugame.com:3000"}, {"com.juzu.b6.release.ios", "http://game.juzugame.com:3000"},
// gp // gp
{"com.combo.heroes.puzzle.rpg", "https://entrance.bigfoot-studio.link"}, {"com.combo.heroes.puzzle.rpg", "https://entrance.wdd817.link"},
}; };
//combine url解析的数据 //combine url解析的数据

View File

@ -3,7 +3,7 @@ guid: de1fb4dac677a6d45ae2ad12a49091c0
TextureImporter: TextureImporter:
internalIDToNameTable: [] internalIDToNameTable: []
externalObjects: {} externalObjects: {}
serializedVersion: 11 serializedVersion: 10
mipmaps: mipmaps:
mipMapMode: 0 mipMapMode: 0
enableMipMap: 0 enableMipMap: 0
@ -23,7 +23,6 @@ TextureImporter:
isReadable: 0 isReadable: 0
streamingMipmaps: 0 streamingMipmaps: 0
streamingMipmapsPriority: 0 streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0 grayScaleToAlpha: 0
generateCubemap: 6 generateCubemap: 6
cubemapConvolution: 0 cubemapConvolution: 0
@ -32,12 +31,12 @@ TextureImporter:
maxTextureSize: 2048 maxTextureSize: 2048
textureSettings: textureSettings:
serializedVersion: 2 serializedVersion: 2
filterMode: 1 filterMode: -1
aniso: 1 aniso: -1
mipBias: 0 mipBias: -100
wrapU: 1 wrapU: 1
wrapV: 1 wrapV: 1
wrapW: 0 wrapW: -1
nPOTScale: 0 nPOTScale: 0
lightmap: 0 lightmap: 0
compressionQuality: 50 compressionQuality: 50
@ -55,13 +54,9 @@ TextureImporter:
textureType: 8 textureType: 8
textureShape: 1 textureShape: 1
singleChannelComponent: 0 singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0 maxTextureSizeSet: 0
compressionQualitySet: 0 compressionQualitySet: 0
textureFormatSet: 0 textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 1
platformSettings: platformSettings:
- serializedVersion: 3 - serializedVersion: 3
buildTarget: DefaultTexturePlatform buildTarget: DefaultTexturePlatform

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine; using Spine;
@ -141,13 +141,13 @@ namespace Spine.Unity.Examples {
if (trackEntry != null) { if (trackEntry != null) {
if (control.useCustomMixDuration) if (control.useCustomMixDuration)
trackEntry.MixDuration = control.mixDuration; trackEntry.SetMixDuration(control.mixDuration, 0f); // use SetMixDuration(mixDuration, delay) to update delay correctly
if (useOverrideAttachmentThreshold) if (useOverrideAttachmentThreshold)
trackEntry.AttachmentThreshold = attachmentThreshold; trackEntry.MixAttachmentThreshold = attachmentThreshold;
if (useOverrideDrawOrderThreshold) if (useOverrideDrawOrderThreshold)
trackEntry.DrawOrderThreshold = drawOrderThreshold; trackEntry.MixDrawOrderThreshold = drawOrderThreshold;
} }
// Don't parse more than one animation per track. // Don't parse more than one animation per track.

View File

@ -13,7 +13,7 @@ OcclusionCullingSettings:
--- !u!104 &2 --- !u!104 &2
RenderSettings: RenderSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 8 serializedVersion: 10
m_Fog: 0 m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3 m_FogMode: 3
@ -39,37 +39,33 @@ RenderSettings:
m_CustomReflection: {fileID: 0} m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0} m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3 --- !u!157 &3
LightmapSettings: LightmapSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 11 serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings: m_GISettings:
serializedVersion: 2 serializedVersion: 2
m_BounceScale: 1 m_BounceScale: 1
m_IndirectOutputScale: 1 m_IndirectOutputScale: 1
m_AlbedoBoost: 1 m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0 m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0 m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0 m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings: m_LightmapEditorSettings:
serializedVersion: 9 serializedVersion: 12
m_Resolution: 2 m_Resolution: 2
m_BakeResolution: 40 m_BakeResolution: 40
m_TextureWidth: 1024 m_AtlasSize: 1024
m_TextureHeight: 1024
m_AO: 0 m_AO: 0
m_AOMaxDistance: 1 m_AOMaxDistance: 1
m_CompAOExponent: 1 m_CompAOExponent: 1
m_CompAOExponentDirect: 0 m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2 m_Padding: 2
m_LightmapParameters: {fileID: 0} m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1 m_LightmapsBakeMode: 1
m_TextureCompression: 1 m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2 m_ReflectionCompression: 2
m_MixedBakeMode: 2 m_MixedBakeMode: 2
m_BakeBackend: 0 m_BakeBackend: 0
@ -77,23 +73,34 @@ LightmapSettings:
m_PVRDirectSampleCount: 32 m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500 m_PVRSampleCount: 500
m_PVRBounces: 2 m_PVRBounces: 2
m_PVRFiltering: 0 m_PVREnvironmentSampleCount: 500
m_PVRFilteringMode: 1 m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1 m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousColorSigma: 1 m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousNormalSigma: 1 m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigma: 1 m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0} m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 1 m_LightingSettings: {fileID: 1506007501}
--- !u!196 &4 --- !u!196 &4
NavMeshSettings: NavMeshSettings:
serializedVersion: 2 serializedVersion: 2
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_BuildSettings: m_BuildSettings:
serializedVersion: 2 serializedVersion: 3
agentTypeID: 0 agentTypeID: 0
agentRadius: 0.5 agentRadius: 0.5
agentHeight: 2 agentHeight: 2
@ -106,20 +113,25 @@ NavMeshSettings:
cellSize: 0.16666667 cellSize: 0.16666667
manualTileSize: 0 manualTileSize: 0
tileSize: 256 tileSize: 256
accuratePlacement: 0 buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0} m_NavMeshData: {fileID: 0}
--- !u!1 &92207858 --- !u!1 &92207858
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
serializedVersion: 5 m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 92207862} - component: {fileID: 92207862}
- component: {fileID: 92207861} - component: {fileID: 92207861}
- component: {fileID: 92207860} - component: {fileID: 92207860}
m_Layer: 5 m_Layer: 5
m_Name: 3 Canvas - Spawn SkeletonGraphic Sample m_Name: 2 Canvas - Spawn SkeletonGraphic Sample
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -128,12 +140,13 @@ GameObject:
--- !u!114 &92207860 --- !u!114 &92207860
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 92207858} m_GameObject: {fileID: 92207858}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_UiScaleMode: 1 m_UiScaleMode: 1
@ -146,11 +159,13 @@ MonoBehaviour:
m_FallbackScreenDPI: 96 m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96 m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1 m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &92207861 --- !u!223 &92207861
Canvas: Canvas:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 92207858} m_GameObject: {fileID: 92207858}
m_Enabled: 1 m_Enabled: 1
serializedVersion: 3 serializedVersion: 3
@ -162,35 +177,122 @@ Canvas:
m_OverrideSorting: 0 m_OverrideSorting: 0
m_OverridePixelPerfect: 0 m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0 m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0 m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0 m_SortingLayerID: 0
m_SortingOrder: 0 m_SortingOrder: 0
m_TargetDisplay: 0 m_TargetDisplay: 0
--- !u!224 &92207862 --- !u!224 &92207862
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 92207858} m_GameObject: {fileID: 92207858}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1691562007} - {fileID: 1691562007}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0} m_Pivot: {x: 0, y: 0}
--- !u!1 &191860306
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 191860307}
- component: {fileID: 191860309}
- component: {fileID: 191860308}
m_Layer: 0
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &191860307
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191860306}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1200587070}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &191860308
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191860306}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &191860309
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191860306}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!1 &433620963 --- !u!1 &433620963
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
serializedVersion: 5 m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 433620968} - component: {fileID: 433620968}
- component: {fileID: 433620967} - component: {fileID: 433620967}
@ -206,27 +308,44 @@ GameObject:
--- !u!81 &433620964 --- !u!81 &433620964
AudioListener: AudioListener:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 433620963} m_GameObject: {fileID: 433620963}
m_Enabled: 1 m_Enabled: 1
--- !u!124 &433620965 --- !u!124 &433620965
Behaviour: Behaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 433620963} m_GameObject: {fileID: 433620963}
m_Enabled: 1 m_Enabled: 1
--- !u!20 &433620967 --- !u!20 &433620967
Camera: Camera:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 433620963} m_GameObject: {fileID: 433620963}
m_Enabled: 1 m_Enabled: 1
serializedVersion: 2 serializedVersion: 2
m_ClearFlags: 1 m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect: m_NormalizedViewPortRect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
@ -248,35 +367,38 @@ Camera:
m_TargetEye: 3 m_TargetEye: 3
m_HDR: 1 m_HDR: 1
m_AllowMSAA: 1 m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0 m_ForceIntoRT: 0
m_OcclusionCulling: 1 m_OcclusionCulling: 1
m_StereoConvergence: 10 m_StereoConvergence: 10
m_StereoSeparation: 0.022 m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!4 &433620968 --- !u!4 &433620968
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 433620963} m_GameObject: {fileID: 433620963}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10} m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &651278528 --- !u!1 &651278528
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
serializedVersion: 5 m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 651278530} - component: {fileID: 651278530}
- component: {fileID: 651278529} - component: {fileID: 651278529}
m_Layer: 0 m_Layer: 0
m_Name: 2 RuntimeLoadFromExports m_Name: 3 RuntimeLoadFromExports
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -285,8 +407,9 @@ GameObject:
--- !u!114 &651278529 --- !u!114 &651278529
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 651278528} m_GameObject: {fileID: 651278528}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
@ -297,27 +420,251 @@ MonoBehaviour:
atlasText: {fileID: 4900000, guid: 5c0a5c36970a46e4d8378760ab4a4cfc, type: 3} atlasText: {fileID: 4900000, guid: 5c0a5c36970a46e4d8378760ab4a4cfc, type: 3}
textures: textures:
- {fileID: 2800000, guid: 49bb65eefe08e424bbf7a38bc98ec638, type: 3} - {fileID: 2800000, guid: 49bb65eefe08e424bbf7a38bc98ec638, type: 3}
materialPropertySource: {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, materialPropertySource: {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
type: 2} delay: 0
skinName:
animationName:
blendModeMaterials: 0
applyAdditiveMaterial: 0
blendModeTemplateMaterials:
additiveTemplate: {fileID: 0}
multiplyTemplate: {fileID: 0}
screenTemplate: {fileID: 0}
graphicBlendModeMaterials:
additiveTemplate: {fileID: 0}
multiplyTemplate: {fileID: 0}
screenTemplate: {fileID: 0}
skeletonGraphicMaterial: {fileID: 2100000, guid: b66cf7a186d13054989b33a5c90044e4, type: 2}
--- !u!4 &651278530 --- !u!4 &651278530
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 651278528} m_GameObject: {fileID: 651278528}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1025308469}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1025308468
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1025308469}
- component: {fileID: 1025308472}
- component: {fileID: 1025308471}
m_Layer: 0
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1025308469
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1025308468}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 651278530}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &1025308471
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1025308468}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &1025308472
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1025308468}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!1 &1200587068
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1200587070}
- component: {fileID: 1200587069}
m_Layer: 0
m_Name: 4 Runtime BlendModes from Exports
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1200587069
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1200587068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb0837af7345d504db63d0c662fd12dc, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonJson: {fileID: 4900000, guid: 1a6f51aad0fef5a40aeedfeec5c0b8b2, type: 3}
atlasText: {fileID: 4900000, guid: 188756a89517d7649a67fb53606220f5, type: 3}
textures:
- {fileID: 2800000, guid: dc1b9f9665c8aa74799404a1d2038e3d, type: 3}
materialPropertySource: {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
delay: 0
skinName:
animationName:
blendModeMaterials: 1
applyAdditiveMaterial: 0
blendModeTemplateMaterials:
additiveTemplate: {fileID: 2100000, guid: 4deba332d47209e4780b3c5fcf0e3745, type: 2}
multiplyTemplate: {fileID: 2100000, guid: 53bf0ab317d032d418cf1252d68f51df, type: 2}
screenTemplate: {fileID: 2100000, guid: 73f0f46d3177c614baf0fa48d646a9be, type: 2}
graphicBlendModeMaterials:
additiveTemplate: {fileID: 2100000, guid: 2e8245019faeb8c43b75f9ca3ac8ee34, type: 2}
multiplyTemplate: {fileID: 2100000, guid: e74a1f8978a7da348a721508d0d58834, type: 2}
screenTemplate: {fileID: 2100000, guid: bab24c479f34eec45be6ea8595891569, type: 2}
skeletonGraphicMaterial: {fileID: 2100000, guid: b66cf7a186d13054989b33a5c90044e4, type: 2}
--- !u!4 &1200587070
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1200587068}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 191860307}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!850595691 &1506007501
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Settings.lighting
serializedVersion: 8
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_RealtimeEnvironmentLighting: 1
m_BounceScale: 1
m_AlbedoBoost: 1
m_IndirectOutputScale: 1
m_UsingShadowmask: 1
m_BakeBackend: 1
m_LightmapMaxSize: 1024
m_LightmapSizeFixed: 0
m_UseMipmapLimits: 1
m_BakeResolution: 40
m_Padding: 2
m_LightmapCompression: 3
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAO: 0
m_MixedBakeMode: 2
m_LightmapsBakeMode: 1
m_FilterMode: 1
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVREnvironmentSampleCount: 512
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRMinBounces: 2
m_PVREnvironmentImportanceSampling: 0
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_RespectSceneVisibilityWhenBakingGI: 0
--- !u!1 &1691562006 --- !u!1 &1691562006
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
serializedVersion: 5 m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1691562007} - component: {fileID: 1691562007}
- component: {fileID: 1691562008} - component: {fileID: 1691562008}
@ -331,15 +678,16 @@ GameObject:
--- !u!224 &1691562007 --- !u!224 &1691562007
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1691562006} m_GameObject: {fileID: 1691562006}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 92207862} m_Father: {fileID: 92207862}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -349,8 +697,9 @@ RectTransform:
--- !u!114 &1691562008 --- !u!114 &1691562008
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1691562006} m_GameObject: {fileID: 1691562006}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
@ -360,14 +709,14 @@ MonoBehaviour:
skeletonDataAsset: {fileID: 11400000, guid: a467507a4ffb1d542a558739b2fede77, type: 2} skeletonDataAsset: {fileID: 11400000, guid: a467507a4ffb1d542a558739b2fede77, type: 2}
startingAnimation: run startingAnimation: run
startingSkin: base startingSkin: base
skeletonGraphicMaterial: {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, skeletonGraphicMaterial: {fileID: 2100000, guid: b66cf7a186d13054989b33a5c90044e4, type: 2}
type: 2}
--- !u!1 &1807176298 --- !u!1 &1807176298
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
serializedVersion: 5 m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1807176300} - component: {fileID: 1807176300}
- component: {fileID: 1807176299} - component: {fileID: 1807176299}
@ -381,8 +730,9 @@ GameObject:
--- !u!114 &1807176299 --- !u!114 &1807176299
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1807176298} m_GameObject: {fileID: 1807176298}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
@ -395,13 +745,93 @@ MonoBehaviour:
--- !u!4 &1807176300 --- !u!4 &1807176300
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1807176298} m_GameObject: {fileID: 1807176298}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1924218899
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1924218902}
- component: {fileID: 1924218901}
- component: {fileID: 1924218900}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1924218900
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1924218899}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1924218901
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1924218899}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1924218902
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1924218899}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 433620968}
- {fileID: 1807176300}
- {fileID: 92207862}
- {fileID: 651278530}
- {fileID: 1200587070}
- {fileID: 1924218902}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e08ce2e2ca315ea4a8e8d3a90681a14c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -151,6 +151,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 592567554} m_Father: {fileID: 592567554}
m_RootOrder: 1 m_RootOrder: 1
@ -256,6 +257,9 @@ MonoBehaviour:
materialsInsideMask: [] materialsInsideMask: []
materialsOutsideMask: [] materialsOutsideMask: []
disableRenderingOnOverride: 1 disableRenderingOnOverride: 1
physicsPositionInheritanceFactor: {x: 1, y: 1}
physicsRotationInheritanceFactor: 1
physicsMovementRelativeTo: {fileID: 0}
updateTiming: 1 updateTiming: 1
unscaledTime: 0 unscaledTime: 0
_animationName: run _animationName: run
@ -272,6 +276,7 @@ MeshRenderer:
m_CastShadows: 1 m_CastShadows: 1
m_ReceiveShadows: 1 m_ReceiveShadows: 1
m_DynamicOccludee: 1 m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1 m_MotionVectors: 1
m_LightProbeUsage: 1 m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
@ -320,6 +325,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -7.83, y: 0, z: 5.66} m_LocalPosition: {x: -7.83, y: 0, z: 5.66}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 3 m_RootOrder: 3
@ -352,6 +358,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 592567554} m_Father: {fileID: 592567554}
m_RootOrder: 2 m_RootOrder: 2
@ -434,6 +441,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1911967440} - {fileID: 1911967440}
- {fileID: 71621967} - {fileID: 71621967}
@ -489,6 +497,7 @@ Canvas:
m_OverridePixelPerfect: 0 m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0 m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0 m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0 m_SortingLayerID: 0
m_SortingOrder: 0 m_SortingOrder: 0
m_TargetDisplay: 0 m_TargetDisplay: 0
@ -518,6 +527,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1911967440} m_Father: {fileID: 1911967440}
m_RootOrder: 0 m_RootOrder: 0
@ -554,6 +564,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -3.7153435, y: -0.0017910004, z: 5.9292965} m_LocalPosition: {x: -3.7153435, y: -0.0017910004, z: 5.9292965}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 2 m_RootOrder: 2
@ -583,6 +594,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 1369381601} - component: {fileID: 1369381601}
- component: {fileID: 1369381600} - component: {fileID: 1369381600}
- component: {fileID: 1369381602}
m_Layer: 0 m_Layer: 0
m_Name: Directional Light m_Name: Directional Light
m_TagString: Untagged m_TagString: Untagged
@ -662,10 +674,31 @@ Transform:
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &1369381602
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1369381599}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 1
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
--- !u!1 &1407691187 --- !u!1 &1407691187
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -745,6 +778,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 4.8, z: -10} m_LocalPosition: {x: 0, y: 4.8, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
@ -811,6 +845,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 5 m_RootOrder: 5
@ -843,6 +878,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 592567554} m_Father: {fileID: 592567554}
m_RootOrder: 3 m_RootOrder: 3
@ -930,6 +966,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 592567554} m_Father: {fileID: 592567554}
m_RootOrder: 4 m_RootOrder: 4
@ -1019,9 +1056,10 @@ MonoBehaviour:
color: {r: 1, g: 1, b: 1, a: 1} color: {r: 1, g: 1, b: 1, a: 1}
maxRenderTextureSize: 1024 maxRenderTextureSize: 1024
quad: {fileID: 0} quad: {fileID: 0}
quadMaterial: {fileID: 2100000, guid: 4c507f887c6274a44a603d96e0eabf2a, type: 2}
renderTexture: {fileID: 0} renderTexture: {fileID: 0}
targetCamera: {fileID: 0} targetCamera: {fileID: 0}
quadMaterial: {fileID: 2100000, guid: 4c507f887c6274a44a603d96e0eabf2a, type: 2} shaderPasses: 00000000
--- !u!114 &1786065615 --- !u!114 &1786065615
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1057,6 +1095,9 @@ MonoBehaviour:
materialsInsideMask: [] materialsInsideMask: []
materialsOutsideMask: [] materialsOutsideMask: []
disableRenderingOnOverride: 1 disableRenderingOnOverride: 1
physicsPositionInheritanceFactor: {x: 1, y: 1}
physicsRotationInheritanceFactor: 1
physicsMovementRelativeTo: {fileID: 0}
updateTiming: 1 updateTiming: 1
unscaledTime: 0 unscaledTime: 0
_animationName: run _animationName: run
@ -1073,6 +1114,7 @@ MeshRenderer:
m_CastShadows: 1 m_CastShadows: 1
m_ReceiveShadows: 1 m_ReceiveShadows: 1
m_DynamicOccludee: 1 m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1 m_MotionVectors: 1
m_LightProbeUsage: 1 m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
@ -1121,6 +1163,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 2.38, y: 0, z: 5.66} m_LocalPosition: {x: 2.38, y: 0, z: 5.66}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 4 m_RootOrder: 4
@ -1164,6 +1207,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -4.7074776, y: 0.042612553, z: 0} m_LocalPosition: {x: -4.7074776, y: 0.042612553, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 592567554} - {fileID: 592567554}
m_Father: {fileID: 0} m_Father: {fileID: 0}
@ -1199,6 +1243,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} m_LocalScale: {x: 0.3, y: 0.3, z: 0.3}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1089682727} - {fileID: 1089682727}
m_Father: {fileID: 592567554} m_Father: {fileID: 592567554}
@ -1233,6 +1278,7 @@ MonoBehaviour:
additiveMaterial: {fileID: 2100000, guid: 2e8245019faeb8c43b75f9ca3ac8ee34, type: 2} additiveMaterial: {fileID: 2100000, guid: 2e8245019faeb8c43b75f9ca3ac8ee34, type: 2}
multiplyMaterial: {fileID: 2100000, guid: e74a1f8978a7da348a721508d0d58834, type: 2} multiplyMaterial: {fileID: 2100000, guid: e74a1f8978a7da348a721508d0d58834, type: 2}
screenMaterial: {fileID: 2100000, guid: bab24c479f34eec45be6ea8595891569, type: 2} screenMaterial: {fileID: 2100000, guid: bab24c479f34eec45be6ea8595891569, type: 2}
m_SkeletonColor: {r: 1, g: 1, b: 1, a: 1}
initialSkinName: default initialSkinName: default
initialFlipX: 0 initialFlipX: 0
initialFlipY: 0 initialFlipY: 0
@ -1240,6 +1286,14 @@ MonoBehaviour:
startingLoop: 1 startingLoop: 1
timeScale: 1 timeScale: 1
freeze: 0 freeze: 0
layoutScaleMode: 0
referenceSize: {x: 2145.5999, y: 1302.059}
referencePivot: {x: 0.63858336, y: 0.010301443}
referencePivotOffset: {x: 1370.1444, y: 13.413086}
referenceScale: 1
rectTransformSize: {x: 2145.5999, y: 1302.059}
rectTransformPivot: {x: 0, y: 0}
editReferenceRect: 0
updateWhenInvisible: 3 updateWhenInvisible: 3
allowMultipleCanvasRenderers: 0 allowMultipleCanvasRenderers: 0
canvasRenderers: [] canvasRenderers: []
@ -1247,16 +1301,20 @@ MonoBehaviour:
enableSeparatorSlots: 0 enableSeparatorSlots: 0
separatorParts: [] separatorParts: []
updateSeparatorPartLocation: 1 updateSeparatorPartLocation: 1
updateSeparatorPartScale: 0
disableMeshAssignmentOnOverride: 1 disableMeshAssignmentOnOverride: 1
physicsPositionInheritanceFactor: {x: 1, y: 1}
physicsRotationInheritanceFactor: 1
physicsMovementRelativeTo: {fileID: 0}
meshGenerator: meshGenerator:
settings: settings:
useClipping: 1 useClipping: 1
zSpacing: 0 zSpacing: 0
pmaVertexColors: 1
tintBlack: 0 tintBlack: 0
canvasGroupTintBlack: 0 canvasGroupCompatible: 0
calculateTangents: 0 pmaVertexColors: 1
addNormals: 0 addNormals: 0
calculateTangents: 0
immutableTriangles: 0 immutableTriangles: 0
updateTiming: 1 updateTiming: 1
unscaledTime: 0 unscaledTime: 0
@ -1296,8 +1354,10 @@ MonoBehaviour:
color: {r: 1, g: 1, b: 1, a: 1} color: {r: 1, g: 1, b: 1, a: 1}
maxRenderTextureSize: 1024 maxRenderTextureSize: 1024
quad: {fileID: 0} quad: {fileID: 0}
quadMaterial: {fileID: 2100000, guid: afeb0ae2ea2cda94796515bf8d1b3cb1, type: 2}
renderTexture: {fileID: 0} renderTexture: {fileID: 0}
targetCamera: {fileID: 0} targetCamera: {fileID: 0}
shaderPasses: 00000000
customRenderRect: {fileID: 1089682727} customRenderRect: {fileID: 1089682727}
meshRendererMaterialForTexture: meshRendererMaterialForTexture:
- texture: {fileID: 2800000, guid: 4ea2c33e839afb34c98f66e892b3b2d2, type: 3} - texture: {fileID: 2800000, guid: 4ea2c33e839afb34c98f66e892b3b2d2, type: 3}

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;
@ -124,14 +124,14 @@ namespace Spine.Unity.Examples {
public void PlayShoot () { public void PlayShoot () {
// Play the shoot animation on track 1. // Play the shoot animation on track 1.
TrackEntry shootTrack = skeletonAnimation.AnimationState.SetAnimation(1, shoot, false); TrackEntry shootTrack = skeletonAnimation.AnimationState.SetAnimation(1, shoot, false);
shootTrack.AttachmentThreshold = 1f; shootTrack.MixAttachmentThreshold = 1f;
shootTrack.MixDuration = 0f; shootTrack.SetMixDuration(0f, 0f);
skeletonAnimation.state.AddEmptyAnimation(1, 0.5f, 0.1f); skeletonAnimation.state.AddEmptyAnimation(1, 0.5f, 0.1f);
// Play the aim animation on track 2 to aim at the mouse target. // Play the aim animation on track 2 to aim at the mouse target.
TrackEntry aimTrack = skeletonAnimation.AnimationState.SetAnimation(2, aim, false); TrackEntry aimTrack = skeletonAnimation.AnimationState.SetAnimation(2, aim, false);
aimTrack.AttachmentThreshold = 1f; aimTrack.MixAttachmentThreshold = 1f;
aimTrack.MixDuration = 0f; aimTrack.SetMixDuration(0f, 0f);
skeletonAnimation.state.AddEmptyAnimation(2, 0.5f, 0.1f); skeletonAnimation.state.AddEmptyAnimation(2, 0.5f, 0.1f);
gunSource.pitch = GetRandomPitch(gunsoundPitchOffset); gunSource.pitch = GetRandomPitch(gunsoundPitchOffset);
@ -143,8 +143,8 @@ namespace Spine.Unity.Examples {
public void StartPlayingAim () { public void StartPlayingAim () {
// Play the aim animation on track 2 to aim at the mouse target. // Play the aim animation on track 2 to aim at the mouse target.
TrackEntry aimTrack = skeletonAnimation.AnimationState.SetAnimation(2, aim, true); TrackEntry aimTrack = skeletonAnimation.AnimationState.SetAnimation(2, aim, true);
aimTrack.AttachmentThreshold = 1f; aimTrack.MixAttachmentThreshold = 1f;
aimTrack.MixDuration = 0f; aimTrack.SetMixDuration(0f, 0f); // use SetMixDuration(mixDuration, delay) to update delay correctly
} }
public void StopPlayingAim () { public void StopPlayingAim () {

View File

@ -0,0 +1,167 @@
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated July 28, 2023. Replaces all prior versions.
*
* Copyright (c) 2013-2023, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
* otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
using Spine.Unity;
using System.Collections;
using UnityEngine;
namespace Spine.Unity.Examples {
public class SpineboyBeginnerViewGraphic : MonoBehaviour {
#region Inspector
[Header("Components")]
public SpineboyBeginnerModel model;
public SkeletonGraphic skeletonGraphic;
public AnimationReferenceAsset run, idle, aim, shoot, jump;
public EventDataReferenceAsset footstepEvent;
[Header("Audio")]
public float footstepPitchOffset = 0.2f;
public float gunsoundPitchOffset = 0.13f;
public AudioSource footstepSource, gunSource, jumpSource;
[Header("Effects")]
public ParticleSystem gunParticles;
#endregion
SpineBeginnerBodyState previousViewState;
void Start () {
if (skeletonGraphic == null) return;
model.ShootEvent += PlayShoot;
model.StartAimEvent += StartPlayingAim;
model.StopAimEvent += StopPlayingAim;
skeletonGraphic.AnimationState.Event += HandleEvent;
}
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
if (e.Data == footstepEvent.EventData)
PlayFootstepSound();
}
void Update () {
if (skeletonGraphic == null) return;
if (model == null) return;
if ((skeletonGraphic.Skeleton.ScaleX < 0) != model.facingLeft) { // Detect changes in model.facingLeft
Turn(model.facingLeft);
}
// Detect changes in model.state
SpineBeginnerBodyState currentModelState = model.state;
if (previousViewState != currentModelState) {
PlayNewStableAnimation();
}
previousViewState = currentModelState;
}
void PlayNewStableAnimation () {
SpineBeginnerBodyState newModelState = model.state;
Animation nextAnimation;
// Add conditionals to not interrupt transient animations.
if (previousViewState == SpineBeginnerBodyState.Jumping && newModelState != SpineBeginnerBodyState.Jumping) {
PlayFootstepSound();
}
if (newModelState == SpineBeginnerBodyState.Jumping) {
jumpSource.Play();
nextAnimation = jump;
} else {
if (newModelState == SpineBeginnerBodyState.Running) {
nextAnimation = run;
} else {
nextAnimation = idle;
}
}
skeletonGraphic.AnimationState.SetAnimation(0, nextAnimation, true);
}
void PlayFootstepSound () {
footstepSource.Play();
footstepSource.pitch = GetRandomPitch(footstepPitchOffset);
}
[ContextMenu("Check Tracks")]
void CheckTracks () {
AnimationState state = skeletonGraphic.AnimationState;
Debug.Log(state.GetCurrent(0));
Debug.Log(state.GetCurrent(1));
}
#region Transient Actions
public void PlayShoot () {
// Play the shoot animation on track 1.
TrackEntry shootTrack = skeletonGraphic.AnimationState.SetAnimation(1, shoot, false);
shootTrack.MixAttachmentThreshold = 1f;
shootTrack.SetMixDuration(0f, 0f);
skeletonGraphic.AnimationState.AddEmptyAnimation(1, 0.5f, 0.1f);
// Play the aim animation on track 2 to aim at the mouse target.
TrackEntry aimTrack = skeletonGraphic.AnimationState.SetAnimation(2, aim, false);
aimTrack.MixAttachmentThreshold = 1f;
aimTrack.SetMixDuration(0f, 0f);
skeletonGraphic.AnimationState.AddEmptyAnimation(2, 0.5f, 0.1f);
gunSource.pitch = GetRandomPitch(gunsoundPitchOffset);
gunSource.Play();
//gunParticles.randomSeed = (uint)Random.Range(0, 100);
gunParticles.Play();
}
public void StartPlayingAim () {
// Play the aim animation on track 2 to aim at the mouse target.
TrackEntry aimTrack = skeletonGraphic.AnimationState.SetAnimation(2, aim, true);
aimTrack.MixAttachmentThreshold = 1f;
aimTrack.SetMixDuration(0f, 0f); // use SetMixDuration(mixDuration, delay) to update delay correctly
}
public void StopPlayingAim () {
skeletonGraphic.AnimationState.AddEmptyAnimation(2, 0.5f, 0.1f);
}
public void Turn (bool facingLeft) {
skeletonGraphic.Skeleton.ScaleX = facingLeft ? -1f : 1f;
// Maybe play a transient turning animation too, then call ChangeStableAnimation.
}
#endregion
#region Utility
public float GetRandomPitch (float maxPitchOffset) {
return 1f + Random.Range(-maxPitchOffset, maxPitchOffset);
}
#endregion
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 795971ea6ab1f214eac09ad8814226e6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;

View File

@ -0,0 +1,64 @@
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated July 28, 2023. Replaces all prior versions.
*
* Copyright (c) 2013-2023, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
* otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
using UnityEngine;
namespace Spine.Unity.Examples {
public class SpineboyTargetControllerGraphic : MonoBehaviour {
public SkeletonGraphic skeletonGraphic;
[SpineBone(dataField: "skeletonGraphic")]
public string boneName;
public Camera cam;
public Canvas canvas;
Bone bone;
void OnValidate () {
if (skeletonGraphic == null) skeletonGraphic = GetComponent<SkeletonGraphic>();
}
void Start () {
bone = skeletonGraphic.Skeleton.FindBone(boneName);
}
void Update () {
Vector3 mousePosition = Input.mousePosition;
Vector2 localRectPosition;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
skeletonGraphic.rectTransform, mousePosition, null, out localRectPosition);
Vector3 skeletonSpacePoint = localRectPosition / skeletonGraphic.MeshScale;
skeletonSpacePoint.x *= skeletonGraphic.Skeleton.ScaleX;
skeletonSpacePoint.y *= skeletonGraphic.Skeleton.ScaleY;
bone.SetLocalPosition(skeletonSpacePoint);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e58811512f2bea64988af3798e27f1d8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine; using Spine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections.Generic; using System.Collections.Generic;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine; using Spine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity.AttachmentTools; using Spine.Unity.AttachmentTools;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity.AttachmentTools; using Spine.Unity.AttachmentTools;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity.AttachmentTools; using Spine.Unity.AttachmentTools;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity.AttachmentTools; using Spine.Unity.AttachmentTools;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity.AttachmentTools; using Spine.Unity.AttachmentTools;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2022, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#if UNITY_2017_2_OR_NEWER #if UNITY_2017_2_OR_NEWER

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;
@ -46,14 +46,27 @@ namespace Spine.Unity.Examples {
SpineAtlasAsset runtimeAtlasAsset; SpineAtlasAsset runtimeAtlasAsset;
SkeletonDataAsset runtimeSkeletonDataAsset; SkeletonDataAsset runtimeSkeletonDataAsset;
SkeletonAnimation runtimeSkeletonAnimation; SkeletonAnimation runtimeSkeletonAnimation;
SkeletonGraphic runtimeSkeletonGraphic;
public bool blendModeMaterials = false;
public bool applyAdditiveMaterial = false;
public BlendModeMaterials.TemplateMaterials blendModeTemplateMaterials;
public BlendModeMaterials.TemplateMaterials graphicBlendModeMaterials;
public Material skeletonGraphicMaterial;
void CreateRuntimeAssetsAndGameObject () { void CreateRuntimeAssetsAndGameObject () {
// 1. Create the AtlasAsset (needs atlas text asset and textures, and materials/shader); // 1. Create the AtlasAsset (needs atlas text asset and textures, and materials/shader);
// 2. Create SkeletonDataAsset (needs json or binary asset file, and an AtlasAsset) // 2. Create SkeletonDataAsset (needs json or binary asset file, and an AtlasAsset)
// 3. Create SkeletonAnimation (needs a valid SkeletonDataAsset) // 2.1 Optional: Setup blend mode materials at SkeletonDataAsset. Only required if the skeleton
// uses blend modes which require blend mode materials.
// 3.a Create SkeletonAnimation (needs a valid SkeletonDataAsset)
// 3.b Create SkeletonGraphic (needs a valid SkeletonDataAsset)
runtimeAtlasAsset = SpineAtlasAsset.CreateRuntimeInstance(atlasText, textures, materialPropertySource, true); runtimeAtlasAsset = SpineAtlasAsset.CreateRuntimeInstance(atlasText, textures, materialPropertySource, true, null, true);
runtimeSkeletonDataAsset = SkeletonDataAsset.CreateRuntimeInstance(skeletonJson, runtimeAtlasAsset, true); runtimeSkeletonDataAsset = SkeletonDataAsset.CreateRuntimeInstance(skeletonJson, runtimeAtlasAsset, true);
if (blendModeMaterials)
runtimeSkeletonDataAsset.SetupRuntimeBlendModeMaterials(
applyAdditiveMaterial, blendModeTemplateMaterials);
} }
IEnumerator Start () { IEnumerator Start () {
@ -62,7 +75,15 @@ namespace Spine.Unity.Examples {
runtimeSkeletonDataAsset.GetSkeletonData(false); // preload runtimeSkeletonDataAsset.GetSkeletonData(false); // preload
yield return new WaitForSeconds(delay); yield return new WaitForSeconds(delay);
} }
InstantiateSkeletonAnimation();
InstantiateSkeletonGraphic();
}
void InstantiateSkeletonAnimation () {
runtimeSkeletonAnimation = SkeletonAnimation.NewSkeletonAnimationGameObject(runtimeSkeletonDataAsset); runtimeSkeletonAnimation = SkeletonAnimation.NewSkeletonAnimationGameObject(runtimeSkeletonDataAsset);
runtimeSkeletonAnimation.transform.parent = transform;
runtimeSkeletonAnimation.name = "SkeletonAnimation Instance";
// additional initialization // additional initialization
runtimeSkeletonAnimation.Initialize(false); runtimeSkeletonAnimation.Initialize(false);
@ -72,6 +93,28 @@ namespace Spine.Unity.Examples {
if (animationName != "") if (animationName != "")
runtimeSkeletonAnimation.AnimationState.SetAnimation(0, animationName, true); runtimeSkeletonAnimation.AnimationState.SetAnimation(0, animationName, true);
} }
void InstantiateSkeletonGraphic () {
Canvas canvas = this.GetComponentInChildren<Canvas>();
Transform parent = canvas.transform;
runtimeSkeletonGraphic = SkeletonGraphic.NewSkeletonGraphicGameObject(runtimeSkeletonDataAsset, parent, skeletonGraphicMaterial);
runtimeSkeletonGraphic.name = "SkeletonGraphic Instance";
if (blendModeMaterials) {
runtimeSkeletonGraphic.allowMultipleCanvasRenderers = true;
runtimeSkeletonGraphic.additiveMaterial = graphicBlendModeMaterials.additiveTemplate;
runtimeSkeletonGraphic.multiplyMaterial = graphicBlendModeMaterials.multiplyTemplate;
runtimeSkeletonGraphic.screenMaterial = graphicBlendModeMaterials.screenTemplate;
} }
// additional initialization
runtimeSkeletonGraphic.Initialize(false);
if (skinName != "")
runtimeSkeletonGraphic.Skeleton.SetSkin(skinName);
runtimeSkeletonGraphic.Skeleton.SetSlotsToSetupPose();
if (animationName != "")
runtimeSkeletonGraphic.AnimationState.SetAnimation(0, animationName, true);
}
}
} }

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine; using Spine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity.AttachmentTools; using Spine.Unity.AttachmentTools;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine; using Spine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Original Contribution by: Mitch Thompson // Original Contribution by: Mitch Thompson

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -0,0 +1,268 @@
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated July 28, 2023. Replaces all prior versions.
*
* Copyright (c) 2013-2023, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
* otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#if UNITY_2018_3 || UNITY_2019 || UNITY_2018_3_OR_NEWER
#define NEW_PREFAB_SYSTEM
#endif
#if UNITY_2019_3_OR_NEWER
#define SET_VERTICES_HAS_LENGTH_PARAMETER
#endif
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace Spine.Unity.Examples {
#if NEW_PREFAB_SYSTEM
[ExecuteAlways]
#else
[ExecuteInEditMode]
#endif
public class RenderCombinedMesh : MonoBehaviour {
public SkeletonRenderer skeletonRenderer;
public SkeletonRenderSeparator renderSeparator;
public MeshRenderer[] referenceRenderers;
bool updateViaSkeletonCallback = false;
MeshFilter[] referenceMeshFilters;
MeshRenderer ownRenderer;
MeshFilter ownMeshFilter;
protected DoubleBuffered<Mesh> doubleBufferedMesh;
protected ExposedList<Vector3> positionBuffer;
protected ExposedList<Color32> colorBuffer;
protected ExposedList<Vector2> uvBuffer;
protected ExposedList<int> indexBuffer;
#if UNITY_EDITOR
private void Reset () {
if (skeletonRenderer == null)
skeletonRenderer = this.GetComponentInParent<SkeletonRenderer>();
GatherRenderers();
Awake();
if (referenceRenderers.Length > 0)
ownRenderer.sharedMaterial = referenceRenderers[0].sharedMaterial;
LateUpdate();
}
#endif
protected void GatherRenderers () {
referenceRenderers = this.GetComponentsInChildren<MeshRenderer>();
if (referenceRenderers.Length == 0 ||
(referenceRenderers.Length == 1 && referenceRenderers[0].gameObject == this.gameObject)) {
Transform parent = this.transform.parent;
if (parent)
referenceRenderers = parent.GetComponentsInChildren<MeshRenderer>();
}
referenceRenderers = referenceRenderers.Where(
(val, idx) => val.gameObject != this.gameObject && val.enabled).ToArray();
}
void Awake () {
if (skeletonRenderer == null)
skeletonRenderer = this.GetComponentInParent<SkeletonRenderer>();
if (referenceRenderers == null || referenceRenderers.Length == 0) {
GatherRenderers();
}
if (renderSeparator == null) {
if (skeletonRenderer)
renderSeparator = skeletonRenderer.GetComponent<SkeletonRenderSeparator>();
else
renderSeparator = this.GetComponentInParent<SkeletonRenderSeparator>();
}
int count = referenceRenderers.Length;
referenceMeshFilters = new MeshFilter[count];
for (int i = 0; i < count; ++i) {
referenceMeshFilters[i] = referenceRenderers[i].GetComponent<MeshFilter>();
}
ownRenderer = this.GetComponent<MeshRenderer>();
if (ownRenderer == null)
ownRenderer = this.gameObject.AddComponent<MeshRenderer>();
ownMeshFilter = this.GetComponent<MeshFilter>();
if (ownMeshFilter == null)
ownMeshFilter = this.gameObject.AddComponent<MeshFilter>();
}
void OnEnable () {
#if UNITY_EDITOR
if (Application.isPlaying)
Awake();
#endif
if (skeletonRenderer) {
skeletonRenderer.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
skeletonRenderer.OnMeshAndMaterialsUpdated += UpdateOnCallback;
updateViaSkeletonCallback = true;
}
if (renderSeparator) {
renderSeparator.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
renderSeparator.OnMeshAndMaterialsUpdated += UpdateOnCallback;
updateViaSkeletonCallback = true;
}
}
void OnDisable () {
if (skeletonRenderer)
skeletonRenderer.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
if (renderSeparator)
renderSeparator.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
}
void OnDestroy () {
for (int i = 0; i < 2; ++i) {
Mesh mesh = doubleBufferedMesh.GetNext();
#if UNITY_EDITOR
if (Application.isEditor && !Application.isPlaying)
UnityEngine.Object.DestroyImmediate(mesh);
else
UnityEngine.Object.Destroy(mesh);
#else
UnityEngine.Object.Destroy(mesh);
#endif
}
}
void LateUpdate () {
#if UNITY_EDITOR
if (!Application.isPlaying) {
UpdateMesh();
return;
}
#endif
if (updateViaSkeletonCallback)
return;
UpdateMesh();
}
void UpdateOnCallback (SkeletonRenderer r) {
UpdateMesh();
}
protected void EnsureBufferSizes (int combinedVertexCount, int combinedIndexCount) {
if (positionBuffer == null) {
positionBuffer = new ExposedList<Vector3>(combinedVertexCount);
uvBuffer = new ExposedList<Vector2>(combinedVertexCount);
colorBuffer = new ExposedList<Color32>(combinedVertexCount);
indexBuffer = new ExposedList<int>(combinedIndexCount);
}
if (positionBuffer.Count != combinedVertexCount) {
positionBuffer.Resize(combinedVertexCount);
uvBuffer.Resize(combinedVertexCount);
colorBuffer.Resize(combinedVertexCount);
}
if (indexBuffer.Count != combinedIndexCount) {
indexBuffer.Resize(combinedIndexCount);
}
}
void InitMesh () {
if (doubleBufferedMesh == null) {
doubleBufferedMesh = new DoubleBuffered<Mesh>();
for (int i = 0; i < 2; ++i) {
Mesh combinedMesh = doubleBufferedMesh.GetNext();
combinedMesh.MarkDynamic();
combinedMesh.name = "RenderCombinedMesh" + i;
combinedMesh.subMeshCount = 1;
}
}
}
void UpdateMesh () {
InitMesh();
int combinedVertexCount = 0;
int combinedIndexCount = 0;
GetCombinedMeshInfo(ref combinedVertexCount, ref combinedIndexCount);
EnsureBufferSizes(combinedVertexCount, combinedIndexCount);
int combinedV = 0;
int combinedI = 0;
for (int r = 0, rendererCount = referenceMeshFilters.Length; r < rendererCount; ++r) {
MeshFilter meshFilter = referenceMeshFilters[r];
Mesh mesh = meshFilter.sharedMesh;
if (mesh == null) continue;
int vertexCount = mesh.vertexCount;
Vector3[] positions = mesh.vertices;
Vector2[] uvs = mesh.uv;
Color32[] colors = mesh.colors32;
System.Array.Copy(positions, 0, this.positionBuffer.Items, combinedV, vertexCount);
System.Array.Copy(uvs, 0, this.uvBuffer.Items, combinedV, vertexCount);
System.Array.Copy(colors, 0, this.colorBuffer.Items, combinedV, vertexCount);
for (int s = 0, submeshCount = mesh.subMeshCount; s < submeshCount; ++s) {
int submeshIndexCount = (int)mesh.GetIndexCount(s);
int[] submeshIndices = mesh.GetIndices(s);
int[] dstIndices = this.indexBuffer.Items;
for (int i = 0; i < submeshIndexCount; ++i)
dstIndices[i + combinedI] = submeshIndices[i] + combinedV;
combinedI += submeshIndexCount;
}
combinedV += vertexCount;
}
Mesh combinedMesh = doubleBufferedMesh.GetNext();
combinedMesh.Clear();
#if SET_VERTICES_HAS_LENGTH_PARAMETER
combinedMesh.SetVertices(this.positionBuffer.Items, 0, this.positionBuffer.Count);
combinedMesh.SetUVs(0, this.uvBuffer.Items, 0, this.uvBuffer.Count);
combinedMesh.SetColors(this.colorBuffer.Items, 0, this.colorBuffer.Count);
combinedMesh.SetTriangles(this.indexBuffer.Items, 0, this.indexBuffer.Count, 0);
#else
// Note: excess already contains zero positions and indices after ExposedList.Resize().
combinedMesh.vertices = this.positionBuffer.Items;
combinedMesh.uv = this.uvBuffer.Items;
combinedMesh.colors32 = this.colorBuffer.Items;
combinedMesh.triangles = this.indexBuffer.Items;
#endif
ownMeshFilter.sharedMesh = combinedMesh;
}
void GetCombinedMeshInfo (ref int vertexCount, ref int indexCount) {
for (int r = 0, rendererCount = referenceMeshFilters.Length; r < rendererCount; ++r) {
MeshFilter meshFilter = referenceMeshFilters[r];
Mesh mesh = meshFilter.sharedMesh;
if (mesh == null) continue;
vertexCount += mesh.vertexCount;
for (int s = 0, submeshCount = mesh.subMeshCount; s < submeshCount; ++s) {
indexCount += (int)mesh.GetIndexCount(s);
}
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 05709c69e8e14304b9781652ad05daef
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,14 +23,18 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#if UNITY_2018_3 || UNITY_2019 || UNITY_2018_3_OR_NEWER #if UNITY_2018_3 || UNITY_2019 || UNITY_2018_3_OR_NEWER
#define NEW_PREFAB_SYSTEM #define NEW_PREFAB_SYSTEM
#endif #endif
#if UNITY_2018_2_OR_NEWER
#define HAS_GET_SHARED_MATERIALS
#endif
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
@ -59,20 +63,28 @@ namespace Spine.Unity.Examples {
private Dictionary<Material, Material> replacementMaterialDict = new Dictionary<Material, Material>(); private Dictionary<Material, Material> replacementMaterialDict = new Dictionary<Material, Material>();
private Material[] sharedMaterials = new Material[0]; private Material[] sharedMaterials = new Material[0];
#if HAS_GET_SHARED_MATERIALS
private List<Material> parentMaterials = new List<Material>();
#endif
#if UNITY_EDITOR #if UNITY_EDITOR
private void Reset () { private void Reset () {
if (referenceRenderer == null) { if (referenceRenderer == null) {
if (this.transform.parent)
referenceRenderer = this.transform.parent.GetComponentInParent<MeshRenderer>(); referenceRenderer = this.transform.parent.GetComponentInParent<MeshRenderer>();
if (!referenceRenderer) if (referenceRenderer == null) return;
return;
} }
#if HAS_GET_SHARED_MATERIALS
referenceRenderer.GetSharedMaterials(parentMaterials);
int parentMaterialsCount = parentMaterials.Count;
#else
Material[] parentMaterials = referenceRenderer.sharedMaterials; Material[] parentMaterials = referenceRenderer.sharedMaterials;
if (replacementMaterials.Length != parentMaterials.Length) { int parentMaterialsCount = parentMaterials.Length;
replacementMaterials = new MaterialReplacement[parentMaterials.Length]; #endif
if (replacementMaterials.Length != parentMaterialsCount) {
replacementMaterials = new MaterialReplacement[parentMaterialsCount];
} }
for (int i = 0; i < parentMaterials.Length; ++i) { for (int i = 0; i < parentMaterialsCount; ++i) {
replacementMaterials[i].originalMaterial = parentMaterials[i]; replacementMaterials[i].originalMaterial = parentMaterials[i];
replacementMaterials[i].replacementMaterial = parentMaterials[i]; replacementMaterials[i].replacementMaterial = parentMaterials[i];
} }
@ -82,9 +94,15 @@ namespace Spine.Unity.Examples {
#endif #endif
void Awake () { void Awake () {
ownRenderer = this.GetComponent<MeshRenderer>();
ownMeshFilter = this.GetComponent<MeshFilter>();
if (referenceRenderer == null) { if (referenceRenderer == null) {
if (this.transform.parent != null)
referenceRenderer = this.transform.parent.GetComponentInParent<MeshRenderer>(); referenceRenderer = this.transform.parent.GetComponentInParent<MeshRenderer>();
if (referenceRenderer == null) return;
} }
referenceMeshFilter = referenceRenderer.GetComponent<MeshFilter>();
// subscribe to OnMeshAndMaterialsUpdated // subscribe to OnMeshAndMaterialsUpdated
SkeletonAnimation skeletonRenderer = referenceRenderer.GetComponent<SkeletonAnimation>(); SkeletonAnimation skeletonRenderer = referenceRenderer.GetComponent<SkeletonAnimation>();
@ -93,18 +111,20 @@ namespace Spine.Unity.Examples {
skeletonRenderer.OnMeshAndMaterialsUpdated += UpdateOnCallback; skeletonRenderer.OnMeshAndMaterialsUpdated += UpdateOnCallback;
updateViaSkeletonCallback = true; updateViaSkeletonCallback = true;
} }
referenceMeshFilter = referenceRenderer.GetComponent<MeshFilter>();
ownRenderer = this.GetComponent<MeshRenderer>();
ownMeshFilter = this.GetComponent<MeshFilter>();
InitializeDict(); InitializeDict();
} }
#if UNITY_EDITOR #if UNITY_EDITOR
private void Update () { // handle disabled scene reload
if (!Application.isPlaying) { private void OnEnable () {
InitializeDict(); if (Application.isPlaying)
Awake();
} }
private void Update () {
if (!Application.isPlaying)
InitializeDict();
} }
#endif #endif
@ -126,13 +146,23 @@ namespace Spine.Unity.Examples {
} }
void UpdateMaterials () { void UpdateMaterials () {
#if UNITY_EDITOR
if (!referenceRenderer) return;
if (!referenceMeshFilter) Reset();
#endif
ownMeshFilter.sharedMesh = referenceMeshFilter.sharedMesh; ownMeshFilter.sharedMesh = referenceMeshFilter.sharedMesh;
#if HAS_GET_SHARED_MATERIALS
referenceRenderer.GetSharedMaterials(parentMaterials);
int parentMaterialsCount = parentMaterials.Count;
#else
Material[] parentMaterials = referenceRenderer.sharedMaterials; Material[] parentMaterials = referenceRenderer.sharedMaterials;
if (sharedMaterials.Length != parentMaterials.Length) { int parentMaterialsCount = parentMaterials.Length;
sharedMaterials = new Material[parentMaterials.Length]; #endif
if (sharedMaterials.Length != parentMaterialsCount) {
sharedMaterials = new Material[parentMaterialsCount];
} }
for (int i = 0; i < parentMaterials.Length; ++i) { for (int i = 0; i < parentMaterialsCount; ++i) {
Material parentMaterial = parentMaterials[i]; Material parentMaterial = parentMaterials[i];
if (replacementMaterialDict.ContainsKey(parentMaterial)) { if (replacementMaterialDict.ContainsKey(parentMaterial)) {
sharedMaterials[i] = replacementMaterialDict[parentMaterial]; sharedMaterials[i] = replacementMaterialDict[parentMaterial];
@ -142,6 +172,7 @@ namespace Spine.Unity.Examples {
} }
void InitializeDict () { void InitializeDict () {
replacementMaterialDict.Clear();
for (int i = 0; i < replacementMaterials.Length; ++i) { for (int i = 0; i < replacementMaterials.Length; ++i) {
MaterialReplacement entry = replacementMaterials[i]; MaterialReplacement entry = replacementMaterials[i];
replacementMaterialDict[entry.originalMaterial] = entry.replacementMaterial; replacementMaterialDict[entry.originalMaterial] = entry.replacementMaterial;

View File

@ -0,0 +1,224 @@
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated July 28, 2023. Replaces all prior versions.
*
* Copyright (c) 2013-2025, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
* otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#if UNITY_2018_3 || UNITY_2019 || UNITY_2018_3_OR_NEWER
#define NEW_PREFAB_SYSTEM
#endif
#if UNITY_2018_2_OR_NEWER
#define HAS_CULL_TRANSPARENT_MESH
#endif
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Spine.Unity.Examples {
using MaterialReplacement = RenderExistingMesh.MaterialReplacement;
#if NEW_PREFAB_SYSTEM
[ExecuteAlways]
#else
[ExecuteInEditMode]
#endif
public class RenderExistingMeshGraphic : MonoBehaviour {
public SkeletonGraphic referenceSkeletonGraphic;
public Material replacementMaterial;
public MaterialReplacement[] replacementMaterials = new MaterialReplacement[0];
SkeletonSubmeshGraphic ownGraphic;
public List<SkeletonSubmeshGraphic> ownSubmeshGraphics;
#if UNITY_EDITOR
private void Reset () {
Awake();
LateUpdate();
}
#endif
void Awake () {
// subscribe to OnMeshAndMaterialsUpdated
if (referenceSkeletonGraphic) {
referenceSkeletonGraphic.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
referenceSkeletonGraphic.OnMeshAndMaterialsUpdated += UpdateOnCallback;
}
ownGraphic = this.GetComponent<SkeletonSubmeshGraphic>();
if (referenceSkeletonGraphic) {
if (referenceSkeletonGraphic.allowMultipleCanvasRenderers)
EnsureCanvasRendererCount(referenceSkeletonGraphic.canvasRenderers.Count);
else
SetupSubmeshGraphic();
}
}
protected void OnDisable () {
if (referenceSkeletonGraphic) {
referenceSkeletonGraphic.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
}
}
protected void OnEnable () {
#if UNITY_EDITOR
// handle disabled scene reload
if (Application.isPlaying) {
Awake();
return;
}
#endif
if (referenceSkeletonGraphic) {
referenceSkeletonGraphic.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
referenceSkeletonGraphic.OnMeshAndMaterialsUpdated += UpdateOnCallback;
}
}
void SetupSubmeshGraphic () {
if (ownGraphic == null)
ownGraphic = this.gameObject.AddComponent<SkeletonSubmeshGraphic>();
ownGraphic.maskable = referenceSkeletonGraphic.maskable;
#if HAS_CULL_TRANSPARENT_MESH
ownGraphic.canvasRenderer.cullTransparentMesh = referenceSkeletonGraphic.canvasRenderer.cullTransparentMesh;
#endif
ownGraphic.canvasRenderer.SetMaterial(replacementMaterial, referenceSkeletonGraphic.mainTexture);
}
protected void EnsureCanvasRendererCount (int targetCount) {
if (ownSubmeshGraphics == null)
ownSubmeshGraphics = new List<SkeletonSubmeshGraphic>();
#if HAS_CULL_TRANSPARENT_MESH
bool cullTransparentMesh = referenceSkeletonGraphic.canvasRenderer.cullTransparentMesh;
#endif
Vector2 pivot = referenceSkeletonGraphic.rectTransform.pivot;
int currentCount = ownSubmeshGraphics.Count;
for (int i = currentCount; i < targetCount; ++i) {
GameObject go = new GameObject(string.Format("Renderer{0}", i), typeof(RectTransform));
go.transform.SetParent(this.transform, false);
go.transform.localPosition = Vector3.zero;
CanvasRenderer canvasRenderer = go.AddComponent<CanvasRenderer>();
#if HAS_CULL_TRANSPARENT_MESH
canvasRenderer.cullTransparentMesh = cullTransparentMesh;
#endif
SkeletonSubmeshGraphic submeshGraphic = go.AddComponent<SkeletonSubmeshGraphic>();
ownSubmeshGraphics.Add(submeshGraphic);
submeshGraphic.maskable = referenceSkeletonGraphic.maskable;
submeshGraphic.raycastTarget = false;
submeshGraphic.rectTransform.pivot = pivot;
submeshGraphic.rectTransform.anchorMin = Vector2.zero;
submeshGraphic.rectTransform.anchorMax = Vector2.one;
submeshGraphic.rectTransform.sizeDelta = Vector2.zero;
}
}
protected void UpdateCanvasRenderers () {
Mesh[] referenceMeshes = referenceSkeletonGraphic.MeshesMultipleCanvasRenderers.Items;
Material[] referenceMaterials = referenceSkeletonGraphic.MaterialsMultipleCanvasRenderers.Items;
Texture[] referenceTextures = referenceSkeletonGraphic.TexturesMultipleCanvasRenderers.Items;
int end = Math.Min(ownSubmeshGraphics.Count, referenceSkeletonGraphic.TexturesMultipleCanvasRenderers.Count);
for (int i = 0; i < end; i++) {
SkeletonSubmeshGraphic submeshGraphic = ownSubmeshGraphics[i];
CanvasRenderer reference = referenceSkeletonGraphic.canvasRenderers[i];
if (reference.gameObject.activeInHierarchy) {
Material usedMaterial = replacementMaterial != null ?
replacementMaterial : GetReplacementMaterialFor(referenceMaterials[i]);
if (usedMaterial == null)
usedMaterial = referenceMaterials[i];
usedMaterial = referenceSkeletonGraphic.GetModifiedMaterial(usedMaterial);
submeshGraphic.canvasRenderer.SetMaterial(usedMaterial, referenceTextures[i]);
submeshGraphic.canvasRenderer.SetMesh(referenceMeshes[i]);
submeshGraphic.gameObject.SetActive(true);
} else {
submeshGraphic.canvasRenderer.Clear();
submeshGraphic.gameObject.SetActive(false);
}
}
}
protected void DisableCanvasRenderers () {
for (int i = 0; i < ownSubmeshGraphics.Count; i++) {
SkeletonSubmeshGraphic submeshGraphic = ownSubmeshGraphics[i];
submeshGraphic.canvasRenderer.Clear();
submeshGraphic.gameObject.SetActive(false);
}
}
protected Material GetReplacementMaterialFor (Material originalMaterial) {
for (int i = 0; i < replacementMaterials.Length; ++i) {
MaterialReplacement entry = replacementMaterials[i];
if (entry.originalMaterial != null && entry.originalMaterial.shader == originalMaterial.shader)
return entry.replacementMaterial;
}
return null;
}
#if UNITY_EDITOR
void LateUpdate () {
if (!Application.isPlaying) {
UpdateMesh();
}
}
#endif
void UpdateOnCallback (SkeletonGraphic g) {
UpdateMesh();
}
void UpdateMesh () {
if (!referenceSkeletonGraphic) return;
if (referenceSkeletonGraphic.allowMultipleCanvasRenderers) {
EnsureCanvasRendererCount(referenceSkeletonGraphic.canvasRenderers.Count);
UpdateCanvasRenderers();
if (ownGraphic)
ownGraphic.canvasRenderer.Clear();
} else {
if (ownGraphic == null)
ownGraphic = this.gameObject.AddComponent<SkeletonSubmeshGraphic>();
DisableCanvasRenderers();
Material referenceMaterial = referenceSkeletonGraphic.materialForRendering;
Material usedMaterial = replacementMaterial != null ? replacementMaterial : GetReplacementMaterialFor(referenceMaterial);
if (usedMaterial == null)
usedMaterial = referenceMaterial;
usedMaterial = referenceSkeletonGraphic.GetModifiedMaterial(usedMaterial);
ownGraphic.canvasRenderer.SetMaterial(usedMaterial, referenceSkeletonGraphic.mainTexture);
Mesh mesh = referenceSkeletonGraphic.GetLastMesh();
ownGraphic.canvasRenderer.SetMesh(mesh);
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ff6ce4ce6b9336a479c6bf5af81fa80a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;
@ -98,7 +98,11 @@ public class TwoByTwoTransformEffectExampleEditor : UnityEditor.Editor {
Color originalColor = UnityEditor.Handles.color; Color originalColor = UnityEditor.Handles.color;
UnityEditor.Handles.color = color; UnityEditor.Handles.color = color;
UnityEditor.Handles.DrawLine(transform.position, transform.TransformPoint(v)); UnityEditor.Handles.DrawLine(transform.position, transform.TransformPoint(v));
#if UNITY_2022_1_OR_NEWER
v = transform.InverseTransformPoint(UnityEditor.Handles.FreeMoveHandle(transform.TransformPoint(v), 0.3f, Vector3.zero, UnityEditor.Handles.CubeHandleCap));
#else
v = transform.InverseTransformPoint(UnityEditor.Handles.FreeMoveHandle(transform.TransformPoint(v), Quaternion.identity, 0.3f, Vector3.zero, UnityEditor.Handles.CubeHandleCap)); v = transform.InverseTransformPoint(UnityEditor.Handles.FreeMoveHandle(transform.TransformPoint(v), Quaternion.identity, 0.3f, Vector3.zero, UnityEditor.Handles.CubeHandleCap));
#endif
UnityEditor.Handles.color = originalColor; UnityEditor.Handles.color = originalColor;
} }
} }

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine; using Spine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine; using Spine;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using Spine.Unity; using Spine.Unity;

View File

@ -0,0 +1,106 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: RenderQuadGraphicMaterial
m_Shader: {fileID: 4800000, guid: fa95b0fb6983c0f40a152e6f9aa82bfb, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _CANVAS_GROUP_COMPATIBLE
m_InvalidKeywords:
- _ALPHAPREMULTIPLY_ON
- _USE8NEIGHBOURHOOD_ON
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _CanvasGroupCompatible: 1
- _ColorMask: 15
- _Cutoff: 0.5
- _DarkColorAlphaAdditive: 0
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 3
- _OcclusionStrength: 1
- _OutlineMipLevel: 0
- _OutlineOpaqueAlpha: 1
- _OutlineReferenceTexWidth: 1024
- _OutlineSmoothness: 1
- _OutlineWidth: 3
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilRef: 1
- _StencilWriteMask: 255
- _StraightAlphaInput: 0
- _ThresholdEnd: 0.25
- _UVSec: 0
- _Use8Neighbourhood: 1
- _UseUIAlphaClip: 0
- _ZWrite: 0
m_Colors:
- _Black: {r: 0, g: 0, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 1, g: 1, b: 0, a: 1}
m_BuildTextureStacks: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: afeb0ae2ea2cda94796515bf8d1b3cb1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2022, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#if UNITY_2017_2_OR_NEWER #if UNITY_2017_2_OR_NEWER
@ -40,7 +40,7 @@ namespace Spine.Unity.Examples {
/// <summary> /// <summary>
/// When enabled, this component renders a skeleton to a RenderTexture and /// When enabled, this component renders a skeleton to a RenderTexture and
/// then draws this RenderTexture at a UI RawImage quad of the same size. /// then draws this RenderTexture at a UI SkeletonSubmeshGraphic quad of the same size.
/// This allows changing transparency at a single quad, which produces a more /// This allows changing transparency at a single quad, which produces a more
/// natural fadeout effect. /// natural fadeout effect.
/// Note: It is recommended to keep this component disabled as much as possible /// Note: It is recommended to keep this component disabled as much as possible
@ -64,9 +64,22 @@ namespace Spine.Unity.Examples {
protected SkeletonGraphic skeletonGraphic; protected SkeletonGraphic skeletonGraphic;
public List<TextureMaterialPair> meshRendererMaterialForTexture = new List<TextureMaterialPair>(); public List<TextureMaterialPair> meshRendererMaterialForTexture = new List<TextureMaterialPair>();
protected CanvasRenderer quadCanvasRenderer; protected CanvasRenderer quadCanvasRenderer;
protected RawImage quadRawImage; protected SkeletonSubmeshGraphic quadMaskableGraphic;
protected readonly Vector3[] worldCorners = new Vector3[4]; protected readonly Vector3[] worldCorners = new Vector3[4];
public void ResetMeshRendererMaterials () {
meshRendererMaterialForTexture.Clear();
AtlasAssetBase[] atlasAssets = skeletonGraphic.SkeletonDataAsset.atlasAssets;
for (int i = 0; i < atlasAssets.Length; ++i) {
foreach (Material material in atlasAssets[i].Materials) {
if (material.mainTexture != null) {
meshRendererMaterialForTexture.Add(
new TextureMaterialPair(material.mainTexture, material));
}
}
}
}
protected override void Awake () { protected override void Awake () {
base.Awake(); base.Awake();
skeletonGraphic = this.GetComponent<SkeletonGraphic>(); skeletonGraphic = this.GetComponent<SkeletonGraphic>();
@ -79,28 +92,32 @@ namespace Spine.Unity.Examples {
} }
void CreateQuadChild () { void CreateQuadChild () {
quad = new GameObject(this.name + " RenderTexture", typeof(CanvasRenderer), typeof(RawImage)); quad = new GameObject(this.name + " RenderTexture", typeof(CanvasRenderer), typeof(SkeletonSubmeshGraphic));
quad.transform.SetParent(this.transform.parent, false); quad.transform.SetParent(this.transform.parent, false);
quadCanvasRenderer = quad.GetComponent<CanvasRenderer>(); quadCanvasRenderer = quad.GetComponent<CanvasRenderer>();
quadRawImage = quad.GetComponent<RawImage>(); quadMaskableGraphic = quad.GetComponent<SkeletonSubmeshGraphic>();
quadMesh = new Mesh(); quadMesh = new Mesh();
quadMesh.MarkDynamic(); quadMesh.MarkDynamic();
quadMesh.name = "RenderTexture Quad"; quadMesh.name = "RenderTexture Quad";
quadMesh.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor; quadMesh.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor;
if (quadMaterial == null) {
quadMaterial = new Material(Shader.Find("Spine/SkeletonGraphic"));
quadMaterial.EnableKeyword("_CANVAS_GROUP_COMPATIBLE");
}
} }
void Reset () { void Reset () {
skeletonGraphic = this.GetComponent<SkeletonGraphic>(); skeletonGraphic = this.GetComponent<SkeletonGraphic>();
AtlasAssetBase[] atlasAssets = skeletonGraphic.SkeletonDataAsset.atlasAssets; ResetMeshRendererMaterials();
for (int i = 0; i < atlasAssets.Length; ++i) { #if UNITY_EDITOR
foreach (Material material in atlasAssets[i].Materials) { string[] assets = UnityEditor.AssetDatabase.FindAssets("t:material RenderQuadGraphicMaterial");
if (material.mainTexture != null) { if (assets.Length > 0) {
meshRendererMaterialForTexture.Add( string materialPath = UnityEditor.AssetDatabase.GUIDToAssetPath(assets[0]);
new TextureMaterialPair(material.mainTexture, material)); quadMaterial = UnityEditor.AssetDatabase.LoadAssetAtPath<Material>(materialPath);
}
}
} }
#endif
} }
void OnEnable () { void OnEnable () {
@ -109,6 +126,7 @@ namespace Spine.Unity.Examples {
skeletonGraphic.AssignMeshOverrideMultipleRenderers += RenderMultipleMeshesToRenderTexture; skeletonGraphic.AssignMeshOverrideMultipleRenderers += RenderMultipleMeshesToRenderTexture;
skeletonGraphic.disableMeshAssignmentOnOverride = true; skeletonGraphic.disableMeshAssignmentOnOverride = true;
skeletonGraphic.OnMeshAndMaterialsUpdated += RenderOntoQuad; skeletonGraphic.OnMeshAndMaterialsUpdated += RenderOntoQuad;
skeletonGraphic.OnAnimationRebuild += OnRebuild;
List<CanvasRenderer> canvasRenderers = skeletonGraphic.canvasRenderers; List<CanvasRenderer> canvasRenderers = skeletonGraphic.canvasRenderers;
for (int i = 0; i < canvasRenderers.Count; ++i) for (int i = 0; i < canvasRenderers.Count; ++i)
canvasRenderers[i].cull = true; canvasRenderers[i].cull = true;
@ -123,6 +141,7 @@ namespace Spine.Unity.Examples {
skeletonGraphic.AssignMeshOverrideMultipleRenderers -= RenderMultipleMeshesToRenderTexture; skeletonGraphic.AssignMeshOverrideMultipleRenderers -= RenderMultipleMeshesToRenderTexture;
skeletonGraphic.disableMeshAssignmentOnOverride = false; skeletonGraphic.disableMeshAssignmentOnOverride = false;
skeletonGraphic.OnMeshAndMaterialsUpdated -= RenderOntoQuad; skeletonGraphic.OnMeshAndMaterialsUpdated -= RenderOntoQuad;
skeletonGraphic.OnAnimationRebuild -= OnRebuild;
List<CanvasRenderer> canvasRenderers = skeletonGraphic.canvasRenderers; List<CanvasRenderer> canvasRenderers = skeletonGraphic.canvasRenderers;
for (int i = 0; i < canvasRenderers.Count; ++i) for (int i = 0; i < canvasRenderers.Count; ++i)
canvasRenderers[i].cull = false; canvasRenderers[i].cull = false;
@ -143,6 +162,10 @@ namespace Spine.Unity.Examples {
AssignAtQuad(); AssignAtQuad();
} }
void OnRebuild (ISkeletonAnimation skeletonGraphic) {
ResetMeshRendererMaterials();
}
protected void PrepareForMesh () { protected void PrepareForMesh () {
// We need to get the min/max of all four corners, rotation of the skeleton // We need to get the min/max of all four corners, rotation of the skeleton
// in combination with perspective projection otherwise might lead to incorrect // in combination with perspective projection otherwise might lead to incorrect
@ -194,8 +217,10 @@ namespace Spine.Unity.Examples {
} }
protected void RenderSingleMeshToRenderTexture (Mesh mesh, Material graphicMaterial, Texture texture) { protected void RenderSingleMeshToRenderTexture (Mesh mesh, Material graphicMaterial, Texture texture) {
if (mesh.subMeshCount == 0) return;
Material meshRendererMaterial = MeshRendererMaterialForTexture(texture); Material meshRendererMaterial = MeshRendererMaterialForTexture(texture);
commandBuffer.DrawMesh(mesh, transform.localToWorldMatrix, meshRendererMaterial, 0, -1); foreach (int shaderPass in shaderPasses)
commandBuffer.DrawMesh(mesh, transform.localToWorldMatrix, meshRendererMaterial, 0, shaderPass);
Graphics.ExecuteCommandBuffer(commandBuffer); Graphics.ExecuteCommandBuffer(commandBuffer);
} }
@ -203,19 +228,23 @@ namespace Spine.Unity.Examples {
Mesh[] meshes, Material[] graphicMaterials, Texture[] textures) { Mesh[] meshes, Material[] graphicMaterials, Texture[] textures) {
for (int i = 0; i < meshCount; ++i) { for (int i = 0; i < meshCount; ++i) {
Mesh mesh = meshes[i];
if (mesh.subMeshCount == 0) continue;
Material meshRendererMaterial = MeshRendererMaterialForTexture(textures[i]); Material meshRendererMaterial = MeshRendererMaterialForTexture(textures[i]);
commandBuffer.DrawMesh(meshes[i], transform.localToWorldMatrix, meshRendererMaterial, 0, -1); foreach (int shaderPass in shaderPasses)
commandBuffer.DrawMesh(mesh, transform.localToWorldMatrix, meshRendererMaterial, 0, shaderPass);
} }
Graphics.ExecuteCommandBuffer(commandBuffer); Graphics.ExecuteCommandBuffer(commandBuffer);
} }
protected void SetupQuad () { protected void SetupQuad () {
quadRawImage.texture = this.renderTexture; quadCanvasRenderer.SetMaterial(quadMaterial, this.renderTexture);
quadRawImage.color = color; quadMaskableGraphic.color = color;
quadCanvasRenderer.SetColor(color); quadCanvasRenderer.SetColor(color);
RectTransform srcRectTransform = skeletonGraphic.rectTransform; RectTransform srcRectTransform = skeletonGraphic.rectTransform;
RectTransform dstRectTransform = quadRawImage.rectTransform; RectTransform dstRectTransform = quadMaskableGraphic.rectTransform;
dstRectTransform.anchorMin = srcRectTransform.anchorMin; dstRectTransform.anchorMin = srcRectTransform.anchorMin;
dstRectTransform.anchorMax = srcRectTransform.anchorMax; dstRectTransform.anchorMax = srcRectTransform.anchorMax;
@ -231,24 +260,30 @@ namespace Spine.Unity.Examples {
commandBuffer.SetRenderTarget(renderTexture); commandBuffer.SetRenderTarget(renderTexture);
commandBuffer.ClearRenderTarget(true, true, Color.clear); commandBuffer.ClearRenderTarget(true, true, Color.clear);
Rect canvasRect = skeletonGraphic.canvas.pixelRect; Vector2 targetViewportSize = new Vector2(
screenSpaceMax.x - screenSpaceMin.x,
screenSpaceMax.y - screenSpaceMin.y);
RenderMode canvasRenderMode = skeletonGraphic.canvas.renderMode;
if (canvasRenderMode == RenderMode.ScreenSpaceOverlay) {
Rect canvasRect = skeletonGraphic.canvas.pixelRect;
canvasRect.x += screenSpaceMin.x;
canvasRect.y += screenSpaceMin.y;
canvasRect.width = targetViewportSize.x;
canvasRect.height = targetViewportSize.y;
Matrix4x4 projectionMatrix = Matrix4x4.Ortho( Matrix4x4 projectionMatrix = Matrix4x4.Ortho(
canvasRect.x, canvasRect.x + canvasRect.width, canvasRect.x, canvasRect.x + canvasRect.width,
canvasRect.y, canvasRect.y + canvasRect.height, canvasRect.y, canvasRect.y + canvasRect.height,
float.MinValue, float.MaxValue); float.MinValue, float.MaxValue);
RenderMode canvasRenderMode = skeletonGraphic.canvas.renderMode;
if (canvasRenderMode == RenderMode.ScreenSpaceOverlay) {
commandBuffer.SetViewMatrix(Matrix4x4.identity); commandBuffer.SetViewMatrix(Matrix4x4.identity);
commandBuffer.SetProjectionMatrix(projectionMatrix); commandBuffer.SetProjectionMatrix(projectionMatrix);
} else { } else {
commandBuffer.SetViewMatrix(targetCamera.worldToCameraMatrix); commandBuffer.SetViewMatrix(targetCamera.worldToCameraMatrix);
commandBuffer.SetProjectionMatrix(targetCamera.projectionMatrix); Matrix4x4 projectionMatrix = CalculateProjectionMatrix(targetCamera,
screenSpaceMin, screenSpaceMax, skeletonGraphic.canvas.pixelRect.size);
commandBuffer.SetProjectionMatrix(projectionMatrix);
} }
Rect viewportRect = new Rect(Vector2.zero, targetViewportSize * downScaleFactor);
Vector2 targetCameraViewportSize = targetCamera.pixelRect.size;
Rect viewportRect = new Rect(-screenSpaceMin * downScaleFactor, targetCameraViewportSize * downScaleFactor);
commandBuffer.SetViewport(viewportRect); commandBuffer.SetViewport(viewportRect);
} }

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2022, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#if UNITY_2019_3_OR_NEWER #if UNITY_2019_3_OR_NEWER
@ -52,7 +52,6 @@ namespace Spine.Unity.Examples {
[RequireComponent(typeof(SkeletonRenderer))] [RequireComponent(typeof(SkeletonRenderer))]
public class SkeletonRenderTexture : SkeletonRenderTextureBase { public class SkeletonRenderTexture : SkeletonRenderTextureBase {
#if HAS_GET_SHARED_MATERIALS #if HAS_GET_SHARED_MATERIALS
public Material quadMaterial;
protected SkeletonRenderer skeletonRenderer; protected SkeletonRenderer skeletonRenderer;
protected MeshRenderer meshRenderer; protected MeshRenderer meshRenderer;
protected MeshFilter meshFilter; protected MeshFilter meshFilter;
@ -73,9 +72,21 @@ namespace Spine.Unity.Examples {
CreateQuadChild(); CreateQuadChild();
} }
#if UNITY_EDITOR
protected void Reset () {
string[] folders = { "Assets", "Packages" };
string[] assets = UnityEditor.AssetDatabase.FindAssets("t:material RenderQuadMaterial", folders);
if (assets.Length > 0) {
string materialPath = UnityEditor.AssetDatabase.GUIDToAssetPath(assets[0]);
quadMaterial = UnityEditor.AssetDatabase.LoadAssetAtPath<Material>(materialPath);
}
}
#endif
void CreateQuadChild () { void CreateQuadChild () {
quad = new GameObject(this.name + " RenderTexture", typeof(MeshRenderer), typeof(MeshFilter)); quad = new GameObject(this.name + " RenderTexture", typeof(MeshRenderer), typeof(MeshFilter));
quad.transform.SetParent(this.transform.parent, false); quad.transform.SetParent(this.transform.parent, false);
quad.layer = meshRenderer.gameObject.layer;
quadMeshRenderer = quad.GetComponent<MeshRenderer>(); quadMeshRenderer = quad.GetComponent<MeshRenderer>();
quadMeshFilter = quad.GetComponent<MeshFilter>(); quadMeshFilter = quad.GetComponent<MeshFilter>();
@ -118,6 +129,13 @@ namespace Spine.Unity.Examples {
} }
void RenderOntoQuad (SkeletonRenderer skeletonRenderer) { void RenderOntoQuad (SkeletonRenderer skeletonRenderer) {
if (meshFilter == null)
meshFilter = this.GetComponent<MeshFilter>();
Vector3 size = meshFilter.sharedMesh.bounds.size;
if (size.x == 0f || size.y == 0f) {
AssignNullMeshAtQuad();
return;
}
PrepareForMesh(); PrepareForMesh();
RenderToRenderTexture(); RenderToRenderTexture();
AssignAtQuad(); AssignAtQuad();
@ -164,10 +182,16 @@ namespace Spine.Unity.Examples {
commandBuffer.SetRenderTarget(renderTexture); commandBuffer.SetRenderTarget(renderTexture);
commandBuffer.ClearRenderTarget(true, true, Color.clear); commandBuffer.ClearRenderTarget(true, true, Color.clear);
commandBuffer.SetProjectionMatrix(targetCamera.projectionMatrix);
commandBuffer.SetViewMatrix(targetCamera.worldToCameraMatrix); commandBuffer.SetViewMatrix(targetCamera.worldToCameraMatrix);
Vector2 targetCameraViewportSize = targetCamera.pixelRect.size;
Rect viewportRect = new Rect(-screenSpaceMin * downScaleFactor, targetCameraViewportSize * downScaleFactor); Matrix4x4 projectionMatrix = CalculateProjectionMatrix(targetCamera,
screenSpaceMin, screenSpaceMax, targetCamera.pixelRect.size);
commandBuffer.SetProjectionMatrix(projectionMatrix);
Vector2 targetViewportSize = new Vector2(
screenSpaceMax.x - screenSpaceMin.x,
screenSpaceMax.y - screenSpaceMin.y);
Rect viewportRect = new Rect(Vector2.zero, targetViewportSize * downScaleFactor);
commandBuffer.SetViewport(viewportRect); commandBuffer.SetViewport(viewportRect);
} }
@ -175,9 +199,11 @@ namespace Spine.Unity.Examples {
meshRenderer.GetPropertyBlock(propertyBlock); meshRenderer.GetPropertyBlock(propertyBlock);
meshRenderer.GetSharedMaterials(materials); meshRenderer.GetSharedMaterials(materials);
for (int i = 0; i < materials.Count; i++) for (int i = 0; i < materials.Count; i++) {
foreach (int shaderPass in shaderPasses)
commandBuffer.DrawMesh(meshFilter.sharedMesh, transform.localToWorldMatrix, commandBuffer.DrawMesh(meshFilter.sharedMesh, transform.localToWorldMatrix,
materials[i], meshRenderer.subMeshStartIndex + i, -1, propertyBlock); materials[i], meshRenderer.subMeshStartIndex + i, shaderPass, propertyBlock);
}
Graphics.ExecuteCommandBuffer(commandBuffer); Graphics.ExecuteCommandBuffer(commandBuffer);
} }
@ -186,6 +212,10 @@ namespace Spine.Unity.Examples {
quadMeshRenderer.sharedMaterial.mainTexture = this.renderTexture; quadMeshRenderer.sharedMaterial.mainTexture = this.renderTexture;
quadMeshRenderer.sharedMaterial.color = color; quadMeshRenderer.sharedMaterial.color = color;
} }
protected void AssignNullMeshAtQuad () {
quadMeshFilter.mesh = null;
}
#endif #endif
} }
} }

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2022, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#if UNITY_2017_2_OR_NEWER #if UNITY_2017_2_OR_NEWER
@ -42,9 +42,14 @@ namespace Spine.Unity.Examples {
public Color color = Color.white; public Color color = Color.white;
public int maxRenderTextureSize = 1024; public int maxRenderTextureSize = 1024;
public GameObject quad; public GameObject quad;
public Material quadMaterial;
protected Mesh quadMesh; protected Mesh quadMesh;
public RenderTexture renderTexture; public RenderTexture renderTexture;
public Camera targetCamera; public Camera targetCamera;
[Tooltip("Shader passes to render to the RenderTexture. E.g. set the first element " +
"to -1 to render all shader passes, or set it to 0 to only render the first " +
"shader pass, which may be required when using URP or shadow-casting shaders.")]
public int[] shaderPasses = new int[1] { 0 };
protected CommandBuffer commandBuffer; protected CommandBuffer commandBuffer;
protected Vector2Int screenSize; protected Vector2Int screenSize;
@ -117,6 +122,45 @@ namespace Spine.Unity.Examples {
} }
} }
protected Matrix4x4 CalculateProjectionMatrix (Camera targetCamera,
Vector3 screenSpaceMin, Vector3 screenSpaceMax, Vector2 fullSizePixels) {
if (targetCamera.orthographic)
return CalculateOrthoMatrix(targetCamera, screenSpaceMin, screenSpaceMax, fullSizePixels);
else
return CalculatePerspectiveMatrix(targetCamera, screenSpaceMin, screenSpaceMax, fullSizePixels);
}
protected Matrix4x4 CalculateOrthoMatrix (Camera targetCamera,
Vector3 screenSpaceMin, Vector3 screenSpaceMax, Vector2 fullSizePixels) {
Vector2 cameraSize = new Vector2(
targetCamera.orthographicSize * 2.0f * targetCamera.aspect,
targetCamera.orthographicSize * 2.0f);
Vector2 min = new Vector2(screenSpaceMin.x, screenSpaceMin.y) / fullSizePixels;
Vector2 max = new Vector2(screenSpaceMax.x, screenSpaceMax.y) / fullSizePixels;
Vector2 centerOffset = new Vector2(-0.5f, -0.5f);
min = (min + centerOffset) * cameraSize;
max = (max + centerOffset) * cameraSize;
return Matrix4x4.Ortho(min.x, max.x, min.y, max.y, float.MinValue, float.MaxValue);
}
protected Matrix4x4 CalculatePerspectiveMatrix (Camera targetCamera,
Vector3 screenSpaceMin, Vector3 screenSpaceMax, Vector2 fullSizePixels) {
FrustumPlanes frustumPlanes = targetCamera.projectionMatrix.decomposeProjection;
Vector2 planesSize = new Vector2(
frustumPlanes.right - frustumPlanes.left,
frustumPlanes.top - frustumPlanes.bottom);
Vector2 min = new Vector2(screenSpaceMin.x, screenSpaceMin.y) / fullSizePixels * planesSize;
Vector2 max = new Vector2(screenSpaceMax.x, screenSpaceMax.y) / fullSizePixels * planesSize;
frustumPlanes.right = frustumPlanes.left + max.x;
frustumPlanes.top = frustumPlanes.bottom + max.y;
frustumPlanes.left += min.x;
frustumPlanes.bottom += min.y;
return Matrix4x4.Frustum(frustumPlanes);
}
protected void AssignAtQuad () { protected void AssignAtQuad () {
Transform quadTransform = quad.transform; Transform quadTransform = quad.transform;
quadTransform.position = this.transform.position; quadTransform.position = this.transform.position;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2022, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#if UNITY_2019_3_OR_NEWER #if UNITY_2019_3_OR_NEWER

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson
@ -269,7 +269,7 @@ namespace Spine.Unity.Examples {
t.position -= offset; t.position -= offset;
UpdateSpineSkeleton(null); UpdateSpineSkeleton(null);
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform(Skeleton.Physics.Update);
} }
/// <summary>Removes the ragdoll instance and effect from the animated skeleton.</summary> /// <summary>Removes the ragdoll instance and effect from the animated skeleton.</summary>

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson
@ -281,7 +281,7 @@ namespace Spine.Unity.Examples {
t.position -= offset; t.position -= offset;
UpdateSpineSkeleton(null); UpdateSpineSkeleton(null);
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform(Skeleton.Physics.Update);
} }
/// <summary>Removes the ragdoll instance and effect from the animated skeleton.</summary> /// <summary>Removes the ragdoll instance and effect from the animated skeleton.</summary>

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections; using System.Collections;

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#if UNITY_2018_3 || UNITY_2019 || UNITY_2018_3_OR_NEWER #if UNITY_2018_3 || UNITY_2019 || UNITY_2018_3_OR_NEWER

View File

@ -1,16 +1,16 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes License Agreement * Spine Runtimes License Agreement
* Last updated September 24, 2021. Replaces all prior versions. * Last updated July 28, 2023. Replaces all prior versions.
* *
* Copyright (c) 2013-2021, Esoteric Software LLC * Copyright (c) 2013-2023, Esoteric Software LLC
* *
* Integration of the Spine Runtimes into software or otherwise creating * Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and * derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement: * conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license * http://esotericsoftware.com/spine-editor-license
* *
* Otherwise, it is permitted to integrate the Spine Runtimes into software * Otherwise, it is permitted to integrate the Spine Runtimes into software or
* or otherwise create derivative works of the Spine Runtimes (collectively, * otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own * "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must * Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice. * include this license and copyright notice.
@ -23,8 +23,8 @@
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using System.Collections.Generic; using System.Collections.Generic;

Some files were not shown because too many files have changed in this diff Show More