热更(不重启)整理新建附件:用编辑器自身 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:
1 parent
0886ba647c
commit
7f519edc67
22 files changed
+3780
No files matched your search
@@ -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.
|
@@ -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
|
||||
|
||||
|
Reference in new issue
Block a user