tps文件里面增加一张图片,导出新的plist和png文件后覆盖到项目中,会发现项目里的切图全部错乱了。
图片文件和配置文件确实更新了,但看上去像是引擎用了新的plist和旧的png文件(或者旧的plist和新的png文件)
1赞
3.6.3是好的,3.7就会有这个问题。
另外3.7设置“图片导入默认类型”没有用,即使你设置成sprite-frame,新导进来的图片还是texture
另外,如果把新的plist和png放到一个单独的文件夹里,所有的切图都是正确的。
只有覆盖旧的会导致这个错乱问题
找到问题了,plist和png更新之后,plist.meta在更新时只增加了你新增的一张图片的位置大小等信息,而不是根据plist更新整个meta,这个怎么解决目前没有头绪,大概只能手动改一遍?
截图中可以看到,同一个切图在plist文件中的位置信息更新了,但plist.meta中的信息没有更新
怎么覆盖的?直接拖进编辑器还是?
文件夹里面覆盖,然后在编辑器里刷新
复现了,已经建立 issue 进行处理,感谢反馈
是的 我现在每次加图片还要删了重新拖UI
手撸了一个修复脚本,语言是go,发上来造福一下苦逼开发者吧
package main
import (
"bufio"
"encoding/json"
"fmt"
"io/ioutil"
"os"
)
type Config struct {
FileName string
StartLine int
SecondLine int
EndLine int
}
func main() {
config, err := ioutil.ReadFile("config.json")
if err != nil {
panic(err)
}
var cfg Config
json.Unmarshal(config, &cfg)
// 打开源文件和目标文件
srcFile, err := os.Open(cfg.FileName + ".old")
if err != nil {
panic(err)
}
defer srcFile.Close()
dstFile1, err := os.Open(cfg.FileName + ".new")
if err != nil {
panic(err)
}
defer dstFile1.Close()
// dstFile, err := os.Create("target.txt")
// if err != nil {
// panic(err)
// }
// defer dstFile.Close()
// 指定需要替换的行号
var num = []int{}
for i := cfg.StartLine; i <= cfg.EndLine; i += cfg.SecondLine - cfg.StartLine {
num = append(num, i)
num = append(num, i+1)
num = append(num, i+2)
num = append(num, i+3)
num = append(num, i+4)
num = append(num, i+5)
num = append(num, i+6)
num = append(num, i+7)
num = append(num, i+8)
}
var idx = 0
// 逐行读取源文件
scanner := bufio.NewScanner(srcFile)
dicScanner := bufio.NewScanner(dstFile1)
var lines []string
for scanner.Scan() && dicScanner.Scan() {
idx += 1
if contains(num, idx) {
lines = append(lines, dicScanner.Text())
} else {
lines = append(lines, scanner.Text())
}
}
if err := scanner.Err(); err != nil {
panic(err)
}
fmt.Println(lines)
fmt.Println("lines")
dstFile, err := os.Create(cfg.FileName)
if err != nil {
panic(err)
}
defer dstFile.Close()
// 将目标文件中需要替换的行替换为结果变量中的内容
writer := bufio.NewWriter(dstFile)
for _, line := range lines {
fmt.Fprintln(writer, line)
}
if err := writer.Flush(); err != nil {
panic(err)
}
fmt.Println("Done.")
}
func contains(s []int, e int) bool {
for _, a := range s {
if a == e {
return true
}
}
return false
}

1.在cocos里随便哪个地方新建一个tmp文件夹,导入新的plist图集文件,回到cocos生成新的meta文件。给他添加后缀.new
2.用新的plist图集文件覆盖旧的,回到cocos确保更新meta文件。此时cocos里是错乱的,这个错乱的plist图集文件的meta文件,给他添加后缀.old
3.步骤23的两个文件放到编译后的exe文件同一目录下
4.修改配置文件config.json
startLine是第一个rotate字段的行数(新旧文件行数都是一样的)
secondLine是第二个rotate字段的行数
endLine 是第最后一个rotate字段的行数
思路就是替换行,plist文件的meta文件里之前存在的图片的宽高旋转这些信息不会更新。
用新生成的对的行替换不对的行。
rotate行数见下图
挖坟鞭尸,这个还没有解决呢。


