大致步驟:
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...