U3D资源类型

Unity中,资源有很多类型。

1.脚本类资源
在打包后,脚本都会变成 dll 打到游戏包中。
目录为:…\assets\bin\Data\Managed
a.游戏正常逻辑代码(Assets目录下)
导出为:Assembly-CSharp
b.游戏编辑器逻辑代码
导出为:Assembly-CSharp-Editor
c.在特定目录(standard assets、Pro standard assets、plugins )中代码
导出为:Assembly-CSharp-firstpass
d.在特定目录中编辑器代码
导出为:Assembly-CSharp-Editor-firstpass

so,两个重要的dll为:Assembly-CSharp.dllAssembly-CSharp-firstpass.dll
反编译的话只需导入这两个即可。

2.美术类资源
比如:模型、贴图、场景、预设、材质、shdaer等等。


Unity对工程内的资源,要进行 序列化 ,也就是将资源转为二进制对象。
进而为每个文件生产一份 meta文件。
下面是一个prefab的meta文件内容:

fileFormatVersion: 2
guid: 7e5610b190ec4544587561116f3e7ee9
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 100100000
  userData: 
  assetBundleName: balloonbroken_blue
  assetBundleVariant: 

guid:就是文件在工程内的唯一索引id。
NativeFormatImporter:是导入文件设置,资源类为这个、如果是脚本则为 MonoImporter、贴图则为 TextureImporter。


为什么在编辑器下能进行可视化编辑?
因为序列化。
比如,给一个资源添加一个脚本,就会触发一次序列化操作,将该脚本资源的fileID和guid都序列化存储下来。
这样在运行游戏进行反序列化的时候,就会基于fileID和guid反向找到资源的依赖,从而加载进来。

%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000 //该资源的fileID
Prefab:
  m_ObjectHideFlags: 1
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 0}
    m_Modifications: []
    m_RemovedComponents: []
  m_ParentPrefab: {fileID: 0}
  m_RootGameObject: {fileID: 1597890007182088}
  m_IsPrefabParent: 1
--- !u!114 &114001178430890514
MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 1385286610863512}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 0ca6cd9a23ae6e24a87e69ba6427c420, type: 3}//依赖脚本呢的 fileID 和 guid
  m_Name: 
  m_EditorClassIdentifier: 
  StartupPools: []
  TheStartupPoolMode: 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值