unity3d 如何直接检索预制件中使用的fileID和Guid?

gblwokeq  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(678)

是否有方法可以返回预置文件中的m_Mesh属性的fileID和相应的guid?m_Mesh是meshfilter组件使用的mesh。
如何通过脚本获得4300000和8b73e8872ca76104bbca4ee2b704a1b4这两个值?

cvxl0en2

cvxl0en21#

您可以使用AssetDatabase(仅限编辑器)获取此信息。
AssetDatabase.TryGetGUIDAndLocalFileIdentifier

if (AssetDatabase.TryGetGUIDAndLocalFileIdentifier(obj, out var guid, out long file))
{
    Debug.Log(
        $"Asset: {obj.name}\r\n" +
        $"Instance ID: {obj.GetInstanceID()}\r\n" +
        $"GUID: {guid}\r\n" +
        $"File ID: {file}"
    );
}
0aydgbwb

0aydgbwb2#

添加到this answer,我认为为了获得相应的网格资产,您可以通过SerializedObject,例如

var meshFilter = GetComponent<MeshFilter>();
var so = new SerializedObject(meshFilter);
so.Update();
var meshProperty = so.FindProperty("m_Mesh");
var obj = meshProperty.objectReferenceValue;

现在,您可以从此处将此消息转发到给定的

if (AssetDatabase.TryGetGUIDAndLocalFileIdentifier(obj, out var guid, out long file))
{
    Debug.Log(
        $"Asset: {obj.name}\r\n" +
        $"Instance ID: {obj.GetInstanceID()}\r\n" +
        $"GUID: {guid}\r\n" +
        $"File ID: {file}"
    );
}

相关问题