Unity 查詢unity內建資源的工具

2021-08-15 12:07:10 字數 4367 閱讀 2288

大致步驟:

1、找到unity所有預設體和材質資源

2、拿到這些資源的依賴檔案

3、找到所有 依賴檔案裡的 texture shader material sprite

3.1、 拿到依賴檔案裡的預設體 載入出來 遍歷元件

3.2、 拿到依賴檔案裡的material 載入出來 檢視shader 和貼圖

3.5 、 texture 可能在rawimage元件裡 可能在material元件裡

3.6 、shader只可能在materai裡

3.7 、sprite在image元件裡

4、assetdatabase.getassetpath(object) 拿到這個資源的路徑

5、如果這個路徑包含「builtin」 說明這個資源是unity內建的

**:

using system;

using system.collections.generic;

using system.io;

using system.linq;

using unityeditor;

using unityengine;

using unityengine.ui;

namespace assets.editor.build

private vector3 scrollpos = vector3.zero;

private

static dictionaryres = new dictionary();

private

const

string shader = "shader";

private

const

string texture = "texture";

private

const

string material = "material";

private

const

string sprite = "sprite";

private

const

string prefab = "prefab";

private

const

string renderer = "renderer";

private

const

string image = "image";

private

const

string builtin = "builtin";

////// 載入 buildin資源

///private

static

void

getbuildinresource()

n.add(render, renderer).add(mat, material);

}//判斷shader是不是builtin的

if (assetdatabase.getassetpath(mat.shader).contains(builtin))

n.add(render, renderer).add(mat, material).add(mat.shader, shader);

}//判斷shader用的貼圖是不是用的builtin的

for (int i = 0; i < shaderutil.getpropertycount(mat.shader); i++)

n.add(render, renderer).add(mat, material).add(t, texture);}}

}}

}#endregion

#region 找到prefab裡的 buildin sprite

image images = go.getcomponentsinchildren(true);

foreach (var img in images)

n.add(img, "image").add(img.sprite, sprite);}}

#endregion

#region 找到prefab 裡的texture

rawimage rawimgs = go.getcomponentsinchildren(true);

foreach (var rawimg in rawimgs)

n.add(rawimg, "rawimage").add(rawimg.texture, texture);}}

#endregion}}

else

if (item.endswith("mat"))

n.add(mt.shader, shader);

}#endregion

#region 找到material裡的 texutre

for (int i = 0; i < shaderutil.getpropertycount(mt.shader); i++)

n.add(t, sprite);}}

}#endregion}}

editorutility.displaydialog("", "就緒", "ok");

}///

/// 將standard 替換成mobile diffuse

///private

static

void

replacestandardtodiffuse()

}});

}editorutility.displaydialog("結果", "替換了" + count + "個standard shader", "ok");

if (count != 0)

}///

/// 將buildin shader 替換成本地shader

///private

void

replacebuildintolocal()

}});

}editorutility.displaydialog("結果", "替換了" + count + "個buildin shader", "ok");

if (count != 0)

}///

/// 替換預設材質

///private

void

replacedefaultmaterial()

material defaultmaterial = assetdatabase.loadassetatpath(x[0]);

int count = 0;

foreach (var item in res.values)}}

render.sharedmaterials = mats;}}

});}

editorutility.displaydialog("提示", "替換了" + count + "個" + materialname, "ok");

if (count != 0)

}///

/// 移除使用預設材質的particlesystem元件

///private

void

removeparticlesystemwithdefaultparticle()

;destroyimmediate(ps, true);

editorutility.setdirty(render.gameobject);

count++;

break;}}

}}

}});

}editorutility.displaydialog("提示", "remove" + count + "個particlesystem元件", "ok");

if (count != 0)

}private

void

ongui()

editorguilayout.endvertical();

editorguilayout.endscrollview();

}///

/// 遍歷顯示

//////

private

static

void

transfornode(node n)

editorguilayout.endvertical();

}///

/// 遍歷 操作

//////

///private

static

void

transfornode(node n, actiona)}}

public

class node

return next[obj];

}public

node(unityengine.object content, string des)

public

void

transfornode(actiona)}}

}

Unity 內建轉換矩陣

名稱 說明unity matrix mvp 當前模型檢視投影矩陣,通常用於把頂點 方向向量從模型空間轉換到裁剪空間 unity matrix mv 當前模型檢視矩陣,通常用於把頂點 方向向量從模型空間轉換到視角 相機 空間 unity matrix v 當前檢視矩陣,通常用於把頂點 方向向量從世界空...

基於Unity支援SteamVR的相關資源和配置

大體可以區分為兩類 一類是執行steam上的vr遊戲需要的軟體,另一類則是基於unity開發需要使用的工具外掛程式。第一類 執行所需 此處專指最簡單的微軟mr方案頭顯 代工廠商一般有三星 惠普 聯想 3glasses等 安裝完成後,在使用微軟mr頭顯時,使用wmr進行一次頭顯定位即可正常使用。對於其...

unity查詢資源引用

using system.collections.generic using system.io using system.threading using unityeditor using unityengine public static class findreferences assetgu...