课题Unity3d删除无用的美术资源.docx
- 文档编号:18292615
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:23
- 大小:138.30KB
课题Unity3d删除无用的美术资源.docx
《课题Unity3d删除无用的美术资源.docx》由会员分享,可在线阅读,更多相关《课题Unity3d删除无用的美术资源.docx(23页珍藏版)》请在冰点文库上搜索。
课题Unity3d删除无用的美术资源
Unity3d删除无用的美术资源
这个插件是我在国外网站逛论坛发现的,试用了一下非常好用,是一个轻量级的插件就一个类。
开发中尤其是和美术合作的时候,可能你会发现Project视图中有很多没有用到的资源,但是你又不敢删除,因为你不知道那些资源是没用到的,那些资源是用到的。
这时候ResourceChecker可以帮上大忙。
将ResourceChecker放在Project视图中的Editor文件夹中,如果没有该文件夹就创建一个。
如下图所示,在Unity导航菜单栏中选择Windows->ResourceChecker即可呼出窗口。
在Textures选项卡最下面点击SelectAll可在Project视图中展开目录结构,这时候你删除没有选中的文件就可以。
。
定位贴图、材质、网格。
定位所有文件,总这这个小插件你值得拥有!
代码如下:
usingUnityEngine;
usingUnityEditor;
usingSystem.Collections.Generic;
publicclassTextureDetails
{
publicboolisCubeMap;
publicintmemSizeKB;
publicTexturetexture;
publicTextureFormatformat;
publicintmipMapCount;
publicList
publicList
publicTextureDetails()
{
}
};
publicclassMaterialDetails
{
publicMaterialmaterial;
publicList
publicMaterialDetails()
{
}
};
publicclassMeshDetails
{
publicMeshmesh;
publicList
publicList
publicMeshDetails()
{
}
};
publicclassResourceChecker:
EditorWindow{
string[]inspectToolbarStrings={"Textures","Materials","Meshes"};
enumInspectType
{
Textures,Materials,Meshes
};
InspectTypeActiveInspectType=InspectType.Textures;
floatThumbnailWidth=40;
floatThumbnailHeight=40;
List
List
List
Vector2textureListScrollPos=newVector2(0,0);
Vector2materialListScrollPos=newVector2(0,0);
Vector2meshListScrollPos=newVector2(0,0);
intTotalTextureMemory=0;
intTotalMeshVertices=0;
boolctrlPressed=false;
staticintMinWidth=455;
[MenuItem("Window/ResourceChecker")]
staticvoidInit()
{
ResourceCheckerwindow=(ResourceChecker)EditorWindow.GetWindow(typeof(ResourceChecker));
window.CheckResources();
window.minSize=newVector2(MinWidth,300);
}
voidOnGUI()
{
if(GUILayout.Button("Refresh"))CheckResources();
GUILayout.BeginHorizontal();
GUILayout.Label("Materials"+ActiveMaterials.Count);
GUILayout.Label("Textures"+ActiveTextures.Count+"-"+FormatSizeString(TotalTextureMemory));
GUILayout.Label("Meshes"+ActiveMeshDetails.Count+"-"+TotalMeshVertices+"verts");
GUILayout.EndHorizontal();
ActiveInspectType=(InspectType)GUILayout.Toolbar((int)ActiveInspectType,inspectToolbarStrings);
ctrlPressed=Event.current.control||Emand;
switch(ActiveInspectType)
{
caseInspectType.Textures:
ListTextures();
break;
caseInspectType.Materials:
ListMaterials();
break;
caseInspectType.Meshes:
ListMeshes();
break;
}
}
intGetBitsPerPixel(TextureFormatformat)
{
switch(format)
{
caseTextureFormat.Alpha8:
//Alpha-onlytextureformat.
return8;
caseTextureFormat.ARGB4444:
//A16bits/pixeltextureformat.Texturestorescolorwithanalphachannel.
return16;
caseTextureFormat.RGB24:
//Acolortextureformat.
return24;
caseTextureFormat.RGBA32:
//Colorwithanalphachanneltextureformat.
return32;
caseTextureFormat.ARGB32:
//Colorwithanalphachanneltextureformat.
return32;
caseTextureFormat.RGB565:
//A16bitcolortextureformat.
return16;
caseTextureFormat.DXT1:
//Compressedcolortextureformat.
return4;
caseTextureFormat.DXT5:
//Compressedcolorwithalphachanneltextureformat.
return8;
/*
caseTextureFormat.WiiI4:
//Wiitextureformat.
caseTextureFormat.WiiI8:
//Wiitextureformat.Intensity8bit.
caseTextureFormat.WiiIA4:
//Wiitextureformat.Intensity+Alpha8bit(4+4).
caseTextureFormat.WiiIA8:
//Wiitextureformat.Intensity+Alpha16bit(8+8).
caseTextureFormat.WiiRGB565:
//Wiitextureformat.RGB16bit(565).
caseTextureFormat.WiiRGB5A3:
//Wiitextureformat.RGBA16bit(4443).
caseTextureFormat.WiiRGBA8:
//Wiitextureformat.RGBA32bit(8888).
caseTextureFormat.WiiCMPR:
//CompressedWiitextureformat.4bits/texel,~RGB8A1(Outlinealphaisnotcurrentlysupported).
return0; //Notsupportedyet
*/
caseTextureFormat.PVRTC_RGB2:
//PowerVR(iOS)2bits/pixelcompressedcolortextureformat.
return2;
caseTextureFormat.PVRTC_RGBA2:
//PowerVR(iOS)2bits/pixelcompressedwithalphachanneltextureformat
return2;
caseTextureFormat.PVRTC_RGB4:
//PowerVR(iOS)4bits/pixelcompressedcolortextureformat.
return4;
caseTextureFormat.PVRTC_RGBA4:
//PowerVR(iOS)4bits/pixelcompressedwithalphachanneltextureformat
return4;
caseTextureFormat.ETC_RGB4:
//ETC(GLES2.0)4bits/pixelcompressedRGBtextureformat.
return4;
caseTextureFormat.ATC_RGB4:
//ATC(ATITC)4bits/pixelcompressedRGBtextureformat.
return4;
caseTextureFormat.ATC_RGBA8:
//ATC(ATITC)8bits/pixelcompressedRGBtextureformat.
return8;
caseTextureFormat.BGRA32:
//FormatreturnedbyiPhonecamera
return32;
caseTextureFormat.ATF_RGB_DXT1:
//Flash-specificRGBDXT1compressedcolortextureformat.
caseTextureFormat.ATF_RGBA_JPG:
//Flash-specificRGBAJPG-compressedcolortextureformat.
caseTextureFormat.ATF_RGB_JPG:
//Flash-specificRGBJPG-compressedcolortextureformat.
return0;//Notsupportedyet
}
return0;
}
intCalculateTextureSizeBytes(TexturetTexture)
{
inttWidth=tTexture.width;
inttHeight=tTexture.height;
if(tTextureisTexture2D)
{
Texture2DtTex2D=tTextureasTexture2D;
intbitsPerPixel=GetBitsPerPixel(tTex2D.format);
intmipMapCount=tTex2D.mipmapCount;
intmipLevel=1;
inttSize=0;
while(mipLevel<=mipMapCount)
{
tSize+=tWidth*tHeight*bitsPerPixel/8;
tWidth=tWidth/2;
tHeight=tHeight/2;
mipLevel++;
}
returntSize;
}
if(tTextureisCubemap)
{
CubemaptCubemap=tTextureasCubemap;
intbitsPerPixel=GetBitsPerPixel(tCubemap.format);
returntWidth*tHeight*6*bitsPerPixel/8;
}
return0;
}
voidSelectObject(ObjectselectedObject,boolappend)
{
if(append)
{
List
//Allowtoggleselection
if(currentSelection.Contains(selectedObject))currentSelection.Remove(selectedObject);
elsecurrentSelection.Add(selectedObject);
Selection.objects=currentSelection.ToArray();
}
elseSelection.activeObject=selectedObject;
}
voidSelectObjects(List
{
if(append)
{
List
currentSelection.AddRange(selectedObjects);
Selection.objects=currentSelection.ToArray();
}
elseSelection.objects=selectedObjects.ToArray();
}
voidListTextures()
{
textureListScrollPos=EditorGUILayout.BeginScrollView(textureListScrollPos);
foreach(TextureDetailstDetailsinActiveTextures)
{
GUILayout.BeginHorizontal();
GUILayout.Box(tDetails.texture,GUILayout.Width(ThumbnailWidth),GUILayout.Height(ThumbnailHeight));
if(GUILayout.Button(tDetails.texture.name,GUILayout.Width(150)))
{
SelectObject(tDetails.texture,ctrlPressed);
}
stringsizeLabel=""+tDetails.texture.width+"x"+tDetails.texture.height;
if(tDetails.isCubeMap)sizeLabel+="x6";
sizeLabel+="-"+tDetails.mipMapCount+"mip";
sizeLabel+="\n"+FormatSizeString(tDetails.memSizeKB)+"-"+tDetails.format+"";
GUILayout.Label(sizeLabel,GUILayout.Width(120));
if(GUILayout.Button(tDetails.FoundInMaterials.Count+"Mat",GUILayout.Width(50)))
{
SelectObjects(tDetails.FoundInMaterials,ctrlPressed);
}
if(GUILayout.Button(tDetails.FoundInRenderers.Count+"GO",GUILayout.Width(50)))
{
List
foreach(RendererrendererintDetails.FoundInRenderers)FoundObjects.Add(renderer.gameObject);
SelectObjects(FoundObjects,ctrlPressed);
}
GUILayout.EndHorizontal();
}
if(ActiveTextures.Count>0)
{
GUILayout.BeginHorizontal();
GUILayout.Box("",GUILayout.Width(ThumbnailWidth),GUILayout.Height(ThumbnailHeight));
if(GUILayout.Button("SelectAll",GUILayout.Width(150)))
{
List
foreach(TextureDetailstDetailsinActiveTextures)AllTextures.Add(tDetails.texture);
SelectObjects(AllTextures,ctrlPressed);
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndScrollView();
}
voidListMaterials()
{
materialListScrollPos=EditorGUILayout.BeginScrollView(materialListScrollPos);
foreach(MaterialDetailstDetailsinActiveMaterials)
{
if(tDetails.material!
=null)
{
GUILayout.BeginHorizontal();
if(tDetails.material.mainTexture!
=null)GUILayout.Box(tDetails.material.mainTexture,GUILayout.Width(ThumbnailWidth),GUILayout.Height(ThumbnailHeight));
else
{
GUILayout.Box("n/a",GUILayout.Width(ThumbnailWidth),GUILayout.Height(ThumbnailHeight));
}
if(GUILayout.Button(tDetails.material.name,GUILayout.Width(150)))
{
SelectObject(tDetails.material,ctrlPressed);
}
stringshaderLabel=tDetails.material.shader!
=null?
tDetails.material.shader.name:
"noshader";
GUILayout.Label(shaderLabel,GUILayout.Width(200));
if(GUILayout.Button(tDetails.FoundInRenderers.Count+"GO",GUILayout.Width(50)))
{
List
foreach(RendererrendererintDetails.FoundInRenderers)FoundObjects.Add(renderer.gameObject);
SelectObjects(FoundObjects,ctrlPressed);
}
GUILayout.EndHorizontal();
}
}
EditorGUILayout.EndScrollView();
}
voidListMeshes()
{
meshListScrollPos=EditorGUILayout.BeginScrollView(meshListScrollPos);
foreach(MeshDetailstDetailsinActiveMeshDetails)
{
if(tDetails.mesh!
=null)
{
GUILayout.BeginHorizontal();
/*
if(tDetails.material.mainTexture!
=null)GUILayout.Box(tDetails.material.mainTexture,GUILayout.Width(ThumbnailWidth),GUILayout.Height(ThumbnailHeight));
else
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课题 Unity3d 删除 无用 美术 资源