国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity項目中查找所有使用某一張圖片的材質(zhì)球,再查找所有使用材質(zhì)球的預(yù)設(shè)

這篇具有很好參考價值的文章主要介紹了Unity項目中查找所有使用某一張圖片的材質(zhì)球,再查找所有使用材質(zhì)球的預(yù)設(shè)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

廢話少說,直接上代碼。

using UnityEditor;
using UnityEngine;

public class FindDependencies : MonoBehaviour
{
    static bool m_bIsSaveFile = false;
    static TextWriteHelper m_szMaterialList = new TextWriteHelper();
    static TextWriteHelper m_szPrefabList = new TextWriteHelper();
    [MenuItem("Assets/FindImageDependencies")]
    static void FindDepend()
    {
        m_szMaterialList.ClearData();
        string imagePath = GetObjPath(); // "Assets/Path/To/Your/Image.png";
        string[] guids = AssetDatabase.FindAssets("t:Material");
        foreach (string guid in guids)
        {
            string assetPath = AssetDatabase.GUIDToAssetPath(guid);
            Material material = AssetDatabase.LoadAssetAtPath<Material>(assetPath);

            if (material != null && HasTexture(material, imagePath))
            {
                Debug.Log(string.Format("Material referencing the image: {0}, and path = {1}", material.name, assetPath));
                //m_szMaterialList.AddContent(string.Format("Material referencing the image: {0}, and path = {1}", material.name, assetPath));
                FindPrefab(assetPath);
            }
        }
        if (m_bIsSaveFile)
        {
            m_szMaterialList.SaveFile("MaterialReferenceList");
            m_szPrefabList.SaveFile("PrefabReferenceList");
        }
    }
    static string GetObjPath()
    {
        string path = AssetDatabase.GetAssetPath(Selection.activeInstanceID);
        return path;
    }
    static bool HasTexture(Material material, string texturePath)
    {
        SerializedObject serializedMaterial = new SerializedObject(material);
        SerializedProperty texturesProperty = serializedMaterial.FindProperty("m_SavedProperties.m_TexEnvs");

        for (int i = 0; i < texturesProperty.arraySize; i++)
        {
            SerializedProperty textureProperty = texturesProperty.GetArrayElementAtIndex(i);
            SerializedProperty textureValueProperty = textureProperty.FindPropertyRelative("second.m_Texture");

            if (textureValueProperty != null)
            {
                Texture texture = textureValueProperty.objectReferenceValue as Texture;
                if (texture != null && AssetDatabase.GetAssetPath(texture) == texturePath)
                {
                    return true;
                }
            }
        }
        return false;
    }

    static void FindPrefab(string materialPath)
    {
        //string materialPath = "Assets/Path/To/Your/Material.mat";
        string[] guids = AssetDatabase.FindAssets("t:Prefab");
        foreach (string guid in guids)
        {
            string assetPath = AssetDatabase.GUIDToAssetPath(guid);
            GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(assetPath);

            if (prefab != null && HasMaterialReference(prefab, materialPath))
            {
                Debug.Log(string.Format("Prefab referencing the material: {0},and prefab path ={1} ", prefab.name, assetPath));
                //m_szPrefabList.AddContent(string.Format("Prefab referencing the material: {0},and prefab path ={1} ", prefab.name, assetPath));
            }
        }
    }

    static bool HasMaterialReference(GameObject gameObject, string materialPath)
    {
        Renderer[] renderers = gameObject.GetComponentsInChildren<Renderer>(true);

        foreach (Renderer renderer in renderers)
        {
            foreach (Material material in renderer.sharedMaterials)
            {
                if (material != null && AssetDatabase.GetAssetPath(material) == materialPath)
                {
                    return true;
                }
            }
        }

        return false;
    }
}

上述代碼中,我們首先使用AssetDatabase.FindAssets方法通過過濾類型("t:Material")獲取所有材質(zhì)球的GUID。然后遍歷每個GUID,加載對應(yīng)的材質(zhì)球,判斷該材質(zhì)球是否引用了指定的圖片。我們定義了一個輔助方法HasTexture來檢查材質(zhì)球中的紋理是否引用了目標(biāo)圖片,通過檢查SerializedProperty來判斷紋理是否匹配。

上述代碼中,我們首先使用AssetDatabase.FindAssets方法通過過濾類型("t:Prefab")獲取所有預(yù)設(shè)的GUID。然后遍歷每個GUID,加載對應(yīng)的預(yù)設(shè),并判斷該預(yù)設(shè)是否引用了指定的材質(zhì)球。我們定義了一個輔助方法HasMaterialReference來檢查預(yù)設(shè)及其子物體的渲染組件是否使用了目標(biāo)材質(zhì)球,通過遍歷渲染組件的sharedMaterials數(shù)組來進行匹配。

綜上所訴,我們也可以通過相似的方式去查找其他類型的資源引用。好了大功告成。。。文章來源地址http://www.zghlxwxcb.cn/news/detail-632526.html

到了這里,關(guān)于Unity項目中查找所有使用某一張圖片的材質(zhì)球,再查找所有使用材質(zhì)球的預(yù)設(shè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Unity 批量選擇圖片并轉(zhuǎn)換為材質(zhì)

    Unity 批量選擇圖片并轉(zhuǎn)換為材質(zhì)

    用Selection.GetFiltered來表示選擇到的物體 第一個參數(shù)表示僅檢索此類型的對象。 第二個參數(shù) SelectionMode.Assets 表示僅返回 Asset 目錄中的資源對象。 先檢查當(dāng)前路徑下是否有此名稱的材質(zhì)存在,若存在則不生成新的材質(zhì)。 創(chuàng)建一個材質(zhì)實例。 將材質(zhì)創(chuàng)建為Asset資源。

    2024年02月13日
    瀏覽(69)
  • Unity切割圖片:把一張圖片中的物體裁成多個單獨的游戲物體

    Unity切割圖片:把一張圖片中的物體裁成多個單獨的游戲物體

    首先選中需要切割的圖片素材,將Inspector面板中的 Sprite Mode 由默認(rèn)的 Single改為Multiple ; 然后點擊 Sprite Editor ; 第一步之后便會彈出下例面板,然后 點擊Slice菜單 ,繼續(xù)點擊,便 會自動被分割好 ,最后 點擊右上角的Apply 。 點擊Apply后在右下角會彈出一個小的面板,你可以

    2024年02月05日
    瀏覽(18)
  • 【Unity】編輯器下查找指定文件下的所有特定資源

    ? ? ? ? 需求上很簡單,就是在編輯器下,找到某個制定文件下的所有特定資源(UnityEngine.Object)。Unity 沒有提供專門的 API,我一開始想在網(wǎng)上搜索代碼,發(fā)現(xiàn)沒有現(xiàn)成可以直接用的。 ? ? ? ? 功能實現(xiàn)本身并不復(fù)雜,代碼也比較直觀: ? ? ? ? 其實就是借用 System.IO 的代

    2024年02月11日
    瀏覽(28)
  • 【Unity】編輯器下查找制定文件下的所有特定資源

    ? ? ? ? 需求上很簡單,就是在編輯器下,找到某個制定文件下的所有特定資源(UnityEngine.Object)。Unity 沒有提供專門的 API,我一開始想在網(wǎng)上搜索代碼,發(fā)現(xiàn)沒有現(xiàn)成可以直接用的。 ? ? ? ? 功能實現(xiàn)本身并不復(fù)雜,代碼也比較直觀: ? ? ? ? 其實就是借用 System.IO 的代

    2024年02月12日
    瀏覽(23)
  • roop 一張圖片就能生成換臉視頻的開源項目

    roop 一張圖片就能生成換臉視頻的開源項目

    roop的github地址:https://github.com/s0md3v/roop 記住到 2023-6-18 這天 一定要是python3的10版本,11版本會有包不兼容,我就這個問題耗費了一天。 我使用的是:python3.10.9 python 下載地址:https://www.python.org/downloads/ 下載之后無腦安裝但有一點,全局變量PATH一定要勾選 下載地址:https://

    2024年02月11日
    瀏覽(23)
  • 爬蟲項目(五):抓取網(wǎng)頁所有圖片

    推薦本人書籍《Python網(wǎng)絡(luò)爬蟲入門到實戰(zhàn)》 ,詳細(xì)介紹見??: 《Python網(wǎng)絡(luò)爬蟲入門到實戰(zhàn)》 書籍介紹 原理:抓取該鏈接中所有的圖片格式。基于selenium來獲取,自動下載到output文件夾中。

    2024年02月07日
    瀏覽(23)
  • 使用Python中的matplotlib將多個圖片顯示到一張圖內(nèi)

    使用Python中的matplotlib將多個圖片顯示到一張圖內(nèi)

    在我們寫論文或是匯報時,經(jīng)常需要整合所得到的可視化數(shù)據(jù)結(jié)果,插入我們的論文中。如下所示的情況,我們需要將四個相關(guān)的彈性模量預(yù)測結(jié)果在一張圖里展示。 使用matplotlib庫中的子圖(subplot)功能可以輕松而高效地實現(xiàn)這一過程,避免繁瑣地手動調(diào)節(jié)。 具體代碼如下,

    2024年02月06日
    瀏覽(27)
  • unity中的基本材質(zhì)使用

    unity中的基本材質(zhì)使用

    ? 在unity中我們可以使用unity本身自帶的材質(zhì)來改變物體的顏色,和我們使用法線和高度,光源遮罩來完善我們的物體的質(zhì)感和其他各種的功能 在unity中我們?nèi)绾蝿?chuàng)建一個材質(zhì),首先我們在資源管理界面右鍵鼠標(biāo),點擊第一個創(chuàng)建,再找到Material點擊如何我們的文件中就出現(xiàn)了一

    2023年04月08日
    瀏覽(19)
  • 使用TortoiseGit拉取GitLab代碼倉庫中某一項目的某一分支的代碼

    使用TortoiseGit拉取GitLab代碼倉庫中某一項目的某一分支的代碼

    你安裝好git+TortoiseGit后,你的右鍵變?yōu)椋?說明你安裝成功?。?! 步驟一:打開GitLab網(wǎng)站,先通過 Clone 下拉框,在其中選擇HTTP網(wǎng)址,進行copy【假設(shè)這個是:http://test123.git】 還有一點要注意: 這里有一些分支【在例子中是3個】,每個分支由扮演不同角色的人進行維護 步驟二

    2024年03月22日
    瀏覽(29)
  • SadTalker AI模型使用一張圖片與一段音頻便可以自動生成視頻

    SadTalker AI模型使用一張圖片與一段音頻便可以自動生成視頻

    SadTalker模型是一個使用圖片與音頻文件自動合成人物說話動畫的開源模型,我們自己給模型一張圖片以及一段音頻文件,模型會根據(jù)音頻文件把傳遞的圖片進行人臉的相應(yīng)動作,比如張嘴,眨眼,移動頭部等動作。 SadTalker,它從音頻中生成 3DMM 的 3D 運動系數(shù)(頭部姿勢、表

    2024年02月17日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包