亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【小松教你手游開發】【unity實用技能】unity編輯器工具之加載預制和場景

發布時間:2020-03-05 10:56:27 來源:網絡 閱讀:1675 作者:xiaosongfang 欄目:游戲開發

在unity里做打包或者幫策劃美術做工具的時候經常會需要把Prefab拉出來或者場景打開做檢驗工作

其實這個在上一篇在ui打包的文章里有提到,不過重點不同,上篇重點是打包,這篇的重點是把里面的一個小知識點拉出來講一講

接下來就講講兩者分別怎么做

一、把預制Prefab拉出來

就是像我們平時把預制拉到這個地方

1.首先是獲取你選中的那個Prefab(如果是有其他需求,比如默認目錄下的所有文件等,就不這樣處理,不過大同小異)

GameObject[] selectGameObjects = Selection.gameObjects;   

既然是一個數組就foreach一下。

2.通過AssetDatabase的接口獲取資源路徑并判斷一下選中的文件是否是目標文件夾下的指定后綴文件

string path = AssetDatabase.GetAssetPath(selectGO);  
if(path.StartsWith("Resources/XXX"))  
{  
    if(path.EndsWith(".prefab"))  
    {  
    }  
}  

確認無誤開始下一步

3.拉到Hierarchy里

GameObject uiInstance = PrefabUtility.InstantiatePrefab(selGb) as GameObject  

這樣就等于拉到窗口里了

就可以開始進行各種操作

這里提醒一下一個類似的接口

PrefabUtility.CreatePrefab
這個是把GameObject生成Prefab放到硬盤里,也就是與上面相反的過程。

4.刪除實例

上面的實例是uiInstance,所以要把這個實例刪掉,也就是從Hierarchy里刪掉

UnityEngine.Object.DestroyImmediate(uiInstance);  

更新Prefab(相當于點了個apply)

PrefabUtility.ReplacePrefab(instance,go,ReplacePrefabOptions.ConnectToPrefab);  

二、把Scene打開

有時候美術出完場景需要做一下校準或檢查資源,需要程序幫忙寫個工具,這時候就需要把Scene打開

1.還是跟上面一樣把選中的場景獲取

Object[] selectGameObjects = Selection.objects;  

這里不一樣的是,獲取的是Object而不是GameObject
2.同樣是獲取場景路徑并檢測名字

string path = AssetDatabase.GetAssetPath(selectGO);  
if(path.StartsWith("Resources/XXX"))  
{  
    if(path.EndsWith(".scene"))  
    {  
    }  
}  

同樣,需要改檢測的后綴名為scene

3.打開場景Scene

這里才是主要差別,用的接口不一樣

EditorSceneManager.OpenScene(selGbPath, OpenSceneMode.Single);  
Scene currScene = EditorSceneManager.GetSceneByPath(selGbPath);  

可以看到,先把Scene打開,再通過路徑接口獲取Scene
這兩個步驟缺一不可

4.做你想要的操作

你要打開一個場景,無非是要在里面檢查一些東西或者要修改里面的一些GameObject里的一些值。

其實在你調用EditorSceneManager.OpenScene(selGbPath, OpenSceneMode.Single);以后,你的當前場景已經是你想要的場景了

所以你要找你的GameObject只需要GameObject go = GameObject.Find(“name”);就可以了

5.保存場景

如果你對你的場景打開后不需要做任何操作,你甚至在第三步的時候都不用Scene currScene = EditorSceneManager.GetSceneByPath(selGbPath);

去獲取這個場景。

但畢竟你一般不會這么無聊只打開不做任何操作,所以第二步還是需要獲取。

然后調用

EditorSceneManager.SaveScene(currScene);  

這樣就完成了。

這里不需要像上面實例化GameObject一樣去刪除,場景打開就打開把,同時也就打開一個

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东乌珠穆沁旗| 大渡口区| 凤山县| 丘北县| 道真| 平武县| 屏山县| 迭部县| 崇礼县| 德安县| 东辽县| 固原市| 吴川市| 博罗县| 水富县| 都兰县| 建湖县| 马鞍山市| 淳化县| 府谷县| 荔浦县| 阜宁县| 墨脱县| 崇文区| 广东省| 临泉县| 郑州市| 大港区| 景谷| 沛县| 鱼台县| 柳河县| 赤峰市| 任丘市| 大同县| 会同县| 兰西县| 精河县| 大港区| 兴城市| 屏山县|