prefab里__type__ 里挂的脚本是怎样对应上的?
几个问题,
1,这个__type__的值 是如何随机出来的,有什么规则么?或者只要不重复就可以?
2,这个值可不可以使用其他方式生成,不在编辑器下生成,比如在外问python等其他脚本生成
3,就是主题的问题,对应关系是如何生成的?怎么才能知道这个脚本的__type__值和__type__对应哪个脚本(不在编辑器里)
这几个问题,主要是想用一个脚本来解放美术、策划和程序的那些搬砖的活~~~
prefab里__type__ 里挂的脚本是怎样对应上的?
几个问题,
1,这个__type__的值 是如何随机出来的,有什么规则么?或者只要不重复就可以?
2,这个值可不可以使用其他方式生成,不在编辑器下生成,比如在外问python等其他脚本生成
3,就是主题的问题,对应关系是如何生成的?怎么才能知道这个脚本的__type__值和__type__对应哪个脚本(不在编辑器里)
这几个问题,主要是想用一个脚本来解放美术、策划和程序的那些搬砖的活~~~
meta文件中的uuid -> type
1、取uuid前5位2be5f 记为A
2、取uuid的第6到倒数第2位,去掉-,转换成16进制,然后做base64编码,记为B
3、A和B 连起来就是type。
我看不太懂你这个文件哪来的?我不太记得了。
多谢回复,还有一点不太明白,这个转成16进制指的是什么?如何转成16进制?
这个文件是prefab文件,用文本方式打开的
明白了,
比如 a05709 -> \xa0\x57\x09
经过测试,python生成的与creator有点差别
经过改尽,现在可以了
献上python代码~~~
import base64
#import binascii
def getTypeId(uuid):
# print uuid
typeA = uuid[:5];
# print typeA
typeT = uuid[5:];
# print typeT
typeT = typeT.replace('-','')+'a';#这里随便加一个字母
# print typeT
typeB = "";
for x in xrange(len(typeT)-1):
if x%2==0:
typeB = typeB + chr(int(typeT[x:x+2],16)); #+ binascii.a2b_hex(typeT[x:x+2]);
pass
pass
# print typeB
typeB = base64.b64encode(typeB);
# print typeB
return typeA+typeB[:-2]; #去除后两位多余的
pass
感谢 @kangmoren
确实是 uuid 转 base64
高手啊,看了引擎JS代码 还是自己推测的啊
我们这边有同事找到对应的api 接口了
Editor.assetdb.remote.uuidToUrl()
根据楼上的,补一个python3的方法:
import uuid import base64 def compress_uuid(uid): head = uid[:5] body = uid[5:] body = body.replace('-','')+'f' intArr = [] for x in range(len(body)-1): if x%2==0: intArr.append(int(body[x:x+2],16)) pass pass return head+str(base64.b64encode(bytes(intArr)), "utf-8")[:-2]
同问,这个东西有没有详细的教程
该主题在最后一个回复创建后7天后自动关闭。不再允许新的回复。