热更(不重启)整理新建附件:用编辑器自身 API 重置图片附件变换 + 删除占位(skin)附件

- 确认 GO 的字段/入口:x=D(float)、y=B(float)、rotation=S、scaleX=L、scaleY=I、width=C、height=Z;
  GO.D(FFFFF)V 就是编辑器自己的 setTransform(x,y,rotation,scaleX,scaleY)。
  依据:载荷 JSON 写入器 sb_0.java:669-675 + javap -c GO(两条独立证据),
  width/height 与 mega_dg4.png 真实像素 157x154 对上。
- 确认删除入口:Gn.L()V => skeleton.removeAttachment(this,true,true);GP.L=附件表、GP.Z=插槽表;
  占位附件是载荷类 Hi(hi_2.java 的 I() 返回 "placeholder")。
- 实机(JDK8 attach,进程 56177 全程没重启):20 个新建插槽的图片附件 x/y/rotation 归 0、scale 归 1;
  20 个 Hi 占位附件删除;骨架附件表 43 -> 23;逐个核对删除占位没连带删掉图片附件。
- 顺带把 tools/live(attach 热更工具源码)入库,jar/build 加进 .gitignore。
This commit is contained in:
tianmo committed 2026-10-16 18:26:40 +08:00
1 parent 0886ba647c
commit 7f519edc67
22 files changed
+3780

No files matched your search

+27
View File
@@ -103,3 +103,30 @@ dR I (F)LdR; height
# 故 B()F = getHeight、D()F = getWidth。
dt B ()F getHeight
dt D ()F getWidth
# ---- 图片附件 GO 的 7 个 float 字段(2026-10-16 确认,两条独立证据)----
# 证据 1:编辑器自己的 JSON 写入器 sb_0.java:669-675(写 region 时依次读)
# x=GO.D y=GO.B scaleX=GO.L scaleY=GO.I rotation=GO.S width=GO.C height=GO.Z
# 旁证:width/height 与图片实际像素一致(mega_dg4.png = 157x154,运行时读到的 C=157.0 Z=154.0)
# 证据 2:GO 自己的 setTransform 字节码 javap -c GO 的 D(FFFFF)V:
# putfield D(第1个参数) -> putfield B(2) -> putfield S(3) -> putfield L(4) -> putfield I(5)
# => D(float) = x、B(float) = y(这两个字段名与别的字段重复,必须按类型取 float 那个)
GO D F x
GO B F y
# 图片附件的"设置变换"入口(编辑器自己用的):setTransform(x, y, rotation, scaleX, scaleY)
GO D (FFFFF)V setTransform
# 图片附件没有 shear 字段:region 只有 x/y/rotation/scaleX/scaleY(+ 只读的 width/height)
# ---- 附件删除(编辑器自己的删除流程)----
# 证据:javap -c Gn 的 L()V => this.GU.skeleton.removeAttachment(this, true, true)
# GP 的 D(Gn,ZZ)V 字节码里 getfield L:LfI; fI.B(Object,boolean) 把它从附件表移除,
# 并同步清掉 GU 上指向它的引用(同一方法里遍历 Z:LfI 即插槽表)。
Gn L ()V delete
GP L (LGn;ZZ)V removeAttachment
GP L LfI attachments
GP Z LfI slots
# ---- 附件种类 / 占位附件 ----
# 证据:可读源码 hi_2.java(= 载荷类 Hi)的 I() 直接 return "placeholder";
# 它出现在骨架附件表里但"既不是当前附件也不是静止附件",就是 skin/占位附件。
Gn I ()Ljava/lang/String; type
# 附件上指向自己所属占位附件的引用:GP.removeAttachment 的占位分支按它级联删除
Gn D LHi; placeholderRef
Can't render this file because it contains an unexpected character in line 72 and column 99.
+9
View File
@@ -1,14 +1,23 @@
# 合并后的名字映射表:确定(=)指纹 + 手动/实测锚点
# owner name desc newName
GO B F y
GO C F width
GO D (FFFFF)V setTransform
GO D F x
GO I F scaleY
GO L F scaleX
GO S F rotation
GO Z F height
GP L (LGn;ZZ)V removeAttachment
GP L LfI attachments
GP Z LfI slots
GU D LGn; attachment
GU D LGp; bone
GU D Lcom/badlogic/gdx/graphics/Color; color
GU D Ljava/lang/String; name
Gn D LHi; placeholderRef
Gn I ()Ljava/lang/String; type
Gn L ()V delete
Gp B F setupY
Gp B Lcom/badlogic/gdx/graphics/Color; color
Gp C F setupShear
1 # 合并后的名字映射表:确定(=)指纹 + 手动/实测锚点
2 # owner
3 GO
4 GO
5 GO
6 GO
7 GO
8 GO
9 GO
10 GO
11 GP
12 GP
13 GP
14 GU
15 GU
16 GU
17 GU
18 Gn
19 Gn
20 Gn
21 Gp
22 Gp
23 Gp