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

Unity 編輯器常用方法

這篇具有很好參考價(jià)值的文章主要介紹了Unity 編輯器常用方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

腳本注解

1. RuntimeInitializeOnLoadMethod

自動(dòng)根據(jù)RuntimeInitializeLoadType選擇一個(gè)時(shí)機(jī)執(zhí)行。靜態(tài)方法

  • AfterSceneLoad
    在場(chǎng)景加載之后初始化子系統(tǒng)。這意味著子系統(tǒng)將在場(chǎng)景加載完成后進(jìn)行初始化,并在場(chǎng)景加載后的腳本執(zhí)行時(shí)可用。
  • BeforeSceneLoad
    在場(chǎng)景加載之前初始化子系統(tǒng)。這意味著子系統(tǒng)將在場(chǎng)景加載之前進(jìn)行初始化,并在加載場(chǎng)景時(shí)可用。
  • AfterAssembliesLoaded
    在程序集加載完成后初始化子系統(tǒng)。這意味著子系統(tǒng)將在 Unity 引擎加載所有程序集后進(jìn)行初始化,并在加載完所有程序集后的腳本執(zhí)行時(shí)可用。
  • BeforeSplashScreen
    在顯示啟動(dòng)畫面(Splash Screen)之前初始化子系統(tǒng)。這意味著子系統(tǒng)將在顯示啟動(dòng)畫面之前進(jìn)行初始化,并在啟動(dòng)畫面顯示前的腳本執(zhí)行時(shí)可用。
  • SubsystemRegistration
    以便在子系統(tǒng)注冊(cè)時(shí)觸發(fā)相應(yīng)的初始化方法。
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    public static void Init()
    {
        Debug.Log("先把權(quán)限添加進(jìn)列表,然后申請(qǐng)");
        //AndroidPermissionMgr.permissionList.Add("android.permission.WRITE_SETTINGS"); 紅米10X不能獲取到此權(quán)限
    }
    void Start(){
      AndroidPermissionMgr.StartCheckPermission(0.02f); //開始申請(qǐng)
    }

2. ColorUsage

  • 高級(jí)版拾色器,[ColorUsage(showAlpha: true, hdr: true)]

3. Header

  • 給這個(gè)變量加上一個(gè)加粗的標(biāo)題顯示在編輯器中的屬性藍(lán)中

4. SerializeField

  • 該變量顯示到 Inspector 面板中

5. HideInInspector

  • 在 Inspector 面板中,隱藏任何類型的變量

6. Space

  • 在Inspector 中與上一個(gè)變量分割一段距離,網(wǎng)上推薦取值 10

7. Range

  • 限制數(shù)值型變量的范圍

8. Multiline

  • 單行string變?yōu)槎嘈形谋据斎?/li>

9.[RequireComponent(typeof())]

  • 在inspector中添加此腳本時(shí)必須要有要求的腳本

10.HelpURL

  • 腳本右上角的疑問Url地址

右鍵菜單注解

1. CreateAssetMenu - 針對(duì)ScriptableObject

[CreateAssetMenu(menuName = "ScriptObject/RoadsSetting")]
public class Test{}

菜單欄注解

1. MenuItem

	[MenuItem("Tools/做一件事",priority = 0)]
	void Todo(){
		Debug.Log("做一件事");
	}

其中priority為排序優(yōu)先級(jí)

2.AddComponentMenu

將腳本注冊(cè)到Compoment菜單里面

腳本右鍵注解

1. ContextMenu

    [ContextMenu("自動(dòng)補(bǔ)空",false,0)]
    void AutoAddNull(){
    	Debug.Log("做一件事");
    }

第一個(gè)是顯示的名稱
第二個(gè)是“是否為驗(yàn)證函數(shù)”,即在為true同名方法執(zhí)行前會(huì)先執(zhí)行這個(gè)函數(shù)
第三個(gè)是排序優(yōu)先級(jí)

PrefabUtility 預(yù)制體工具

1.常用方法:

1. InstantiatePrefab(PrefabAssetPath):

該方法用于在場(chǎng)景中實(shí)例化指定路徑的預(yù)制體,并返回實(shí)例化后的游戲?qū)ο蟆?/p>

GameObject go = PrefabUtility.InstantiatePrefab((Object)nullPrefabs, transform) as GameObject;

2. InstantiatePrefabAsGameObject(PrefabAsset):

該方法用于在場(chǎng)景中實(shí)例化指定的預(yù)制體,并返回實(shí)例化后的游戲?qū)ο蟆?/p>

using UnityEditor;
using UnityEngine;

public class MyScript : MonoBehaviour
{
    public GameObject prefab;

    [MenuItem("Example/Instantiate Prefab")]
    private static void InstantiatePrefab()
    {
        GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Prefabs/MyPrefab.prefab");
        if (prefab != null)
        {
            GameObject instance = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
            if (instance != null)
            {
                // 在場(chǎng)景中實(shí)例化預(yù)制體后的處理邏輯
            }
        }
    }
}

3. ReplacePrefab(GameObject, PrefabAsset, ReplacePrefabOptions):

該方法用于將游戲?qū)ο筇鎿Q為指定的預(yù)制體,并返回替換后的預(yù)制體。

using UnityEditor;
using UnityEngine;

public class MyScript : MonoBehaviour
{
    public GameObject prefab;

    [ContextMenu("Replace With Prefab")]
    private void ReplaceWithPrefab()
    {
        GameObject prefabInstance = PrefabUtility.ReplacePrefab(
        		gameObject, 
        		prefab, 
        		ReplacePrefabOptions.Default);
        if (prefabInstance != null)
        {
            // 替換為預(yù)制體后的處理邏輯
        }
    }
}

4. ConnectGameObjectToPrefab(GameObject, PrefabAsset):

該方法用于將游戲?qū)ο筮B接到指定的預(yù)制體,并將其標(biāo)記為預(yù)制體的實(shí)例。

using UnityEditor;
using UnityEngine;

public class MyScript : MonoBehaviour
{
    public GameObject prefab;

    [ContextMenu("Connect to Prefab")]
    private void ConnectToPrefab()
    {
        PrefabUtility.ConnectGameObjectToPrefab(gameObject, prefab);

        // 將游戲?qū)ο筮B接到預(yù)制體后的處理邏輯
    }
}
  • DisconnectPrefabInstance(GameObject):

該方法用于將游戲?qū)ο髲念A(yù)制體實(shí)例斷開連接,并將其轉(zhuǎn)換為普通的游戲?qū)ο蟆?/p>

using UnityEditor;
using UnityEngine;

public class MyScript : MonoBehaviour
{
    [ContextMenu("Disconnect Prefab Instance")]
    private void DisconnectPrefabInstance()
    {
        PrefabUtility.DisconnectPrefabInstance(gameObject);

        // 斷開游戲?qū)ο笈c預(yù)制體實(shí)例關(guān)聯(lián)后的處理邏輯
    }
}

2.常用事件:

1. prefabInstanceUpdated:

當(dāng)預(yù)制體實(shí)例更新時(shí)觸發(fā)的事件??梢酝ㄟ^訂閱此事件,以在預(yù)制體實(shí)例發(fā)生更改時(shí)執(zhí)行自定義邏輯。

using UnityEditor;
using UnityEngine;

public class MyScript : MonoBehaviour
{
    private void OnEnable()
    {
        PrefabUtility.prefabInstanceUpdated += PrefabInstanceUpdatedHandler;
    }

    private void OnDisable()
    {
        PrefabUtility.prefabInstanceUpdated -= PrefabInstanceUpdatedHandler;
    }

    private void PrefabInstanceUpdatedHandler(GameObject instance)
    {
        // 預(yù)制體實(shí)例更新事件處理邏輯
        Debug.Log("Prefab instance updated: " + instance.name);
    }
}

EditorApplication 編輯器

1.常用方法:

1. Play: 啟動(dòng)游戲模式,將編輯器切換到播放模式。

3. Pause: 將游戲暫停,如果游戲正在播放中。

4. IsPlaying: 返回一個(gè)布爾值,指示當(dāng)前是否處于播放模式。

5. IsPaused: 返回一個(gè)布爾值,指示當(dāng)前是否處于暫停狀態(tài)(播放模式下)。

6. IsPlayingOrWillChangePlaymode: 返回一個(gè)布爾值指示當(dāng)前是否處于播放模式或正在切換到播放模式。

7. ExitPlaymode: 退出播放模式。

8. OpenScene(string scenePath): 打開指定路徑的場(chǎng)景。

9. SaveScene: 保存當(dāng)前場(chǎng)景。

10. ReloadLevel: 重新加載當(dāng)前場(chǎng)景。

2.常用事件:

1.delayCall: 在指定的延遲時(shí)間后觸發(fā)的事件。

可以使用此事件來執(zhí)行延遲調(diào)用的邏輯。

using UnityEditor;
using UnityEngine;

public class MyScript : MonoBehaviour
{
    [MenuItem("MyMenu/Delayed Method")]
    private static void DelayedMethod()
    {
        EditorApplication.delayCall += DelayedCallback;
    }

    private static void DelayedCallback()
    {
        Debug.Log("Delayed Method called.");
    }
}

在上述示例中,我們使用 [MenuItem] 特性為自定義菜單項(xiàng)添加了一個(gè) “Delayed Method” 選項(xiàng)。當(dāng)點(diǎn)擊該菜單項(xiàng)時(shí),DelayedMethod 方法會(huì)被調(diào)用。
在 DelayedMethod 方法中,我們訂閱了 EditorApplication.delayCall 事件,并將其回調(diào)方法設(shè)置為 DelayedCallback。這意味著 DelayedCallback 方法將在下一幀或稍后時(shí)間被調(diào)用。
在 DelayedCallback 方法中,我們簡(jiǎn)單地輸出一條日志來表示延遲調(diào)用的方法已被執(zhí)行。

2. playModeStateChanged: 當(dāng)播放模式的狀態(tài)發(fā)生變化時(shí)觸發(fā)的事件。

可以通過訂閱此事件,在播放模式開始、結(jié)束或暫停時(shí)執(zhí)行自定義邏輯。

3. playModeStateChanged (delegate):

與上述事件相同,但使用委托(delegate)訂閱。

4. sceneOpened: 當(dāng)場(chǎng)景被打開時(shí)觸發(fā)的事件。

可以通過訂閱此事件,在場(chǎng)景被打開后執(zhí)行自定義邏輯。

5. sceneClosing: 當(dāng)場(chǎng)景即將關(guān)閉時(shí)觸發(fā)的事件。

可以通過訂閱此事件,在場(chǎng)景關(guān)閉前執(zhí)行自定義邏輯。文章來源地址http://www.zghlxwxcb.cn/news/detail-731125.html

6. hierarchyChanged:當(dāng)hierarchy中的結(jié)構(gòu)發(fā)生改變時(shí)觸發(fā)

using UnityEditor;
using UnityEngine;

public class MyCustomEditor : EditorWindow
{
    [InitializeOnLoadMethod]
    private static void Initialize()
    {
        EditorApplication.hierarchyChanged += OnHierarchyChanged;
    }

    private static void OnHierarchyChanged()
    {
        // 預(yù)制體更新事件發(fā)生時(shí)執(zhí)行的邏輯
        //Debug.Log(Selection.activeGameObject.name);
        if (Selection.activeGameObject)
        {
            if (Selection.activeGameObject.transform.parent)
            {
                var obj = Selection.activeGameObject.transform.parent.GetComponent<AutoLayout>();
                if (obj != null)
                {
                    obj.OnTransformChildrenChanged();
                }
            }
            
        }
        
    }
}

到了這里,關(guān)于Unity 編輯器常用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Unity Shader編輯器工具類ShaderUtil 常用函數(shù)和用法

    Unity的Shader編輯器工具類ShaderUtil提供了一系列函數(shù),用于編譯、導(dǎo)入和管理著色器。本文將介紹ShaderUtil類中的常用函數(shù)和用法。 函數(shù)簽名: public static bool CompileShader(string source, out string error); CompileShader函數(shù)用于編譯一個(gè)著色器。它接受一個(gè)字符串參數(shù)source,表示要編譯的著

    2024年02月14日
    瀏覽(16)
  • Unity 編輯器選擇器工具類Selection 常用函數(shù)和用法

    Unity 編輯器選擇器工具類Selection 常用函數(shù)和用法

    點(diǎn)擊封面跳轉(zhuǎn)下載頁面 在Unity中,Selection類是一個(gè)非常有用的工具類,它提供了許多函數(shù)和屬性,用于操作和管理編輯器中的選擇對(duì)象。本文將介紹Selection類的常用函數(shù)和用法,并提供相應(yīng)的示例代碼。 功能: 獲取或設(shè)置當(dāng)前活動(dòng)的上下文對(duì)象。 示例代碼: 功能: 獲取或

    2024年02月14日
    瀏覽(18)
  • Unity編輯器擴(kuò)展-第四集-獲取物體的方法

    Unity編輯器擴(kuò)展-第四集-獲取物體的方法

    第三集鏈接:Unity編輯器擴(kuò)展-第三集-添加按鈕到組件菜單并且重置組件_菌菌巧樂茲的博客-CSDN博客 ?一、本節(jié)目標(biāo)+效果展示 1.改選中單個(gè)物體的名字 2.改選中所有物體的名字 ?3.選中了所有的物體,但只改第一層物體的名稱 ?4.來個(gè)有用的(選中的所有物體,按順序起名)

    2024年02月14日
    瀏覽(25)
  • 【Overload游戲引擎細(xì)節(jié)分析】編輯器對(duì)象鼠標(biāo)拾取原理

    【Overload游戲引擎細(xì)節(jié)分析】編輯器對(duì)象鼠標(biāo)拾取原理

    ? ? ? Overload的場(chǎng)景視圖區(qū)有拾取鼠標(biāo)功能,單擊拾取物體后會(huì)顯示在Inspector面板中。本文來分析鼠標(biāo)拾取這個(gè)功能背后的原理。 一、OpenGL的FrameBuffer 實(shí)現(xiàn)鼠標(biāo)拾取常用的方式有兩種:渲染id到紋理、光線投射求交。Overload使用的是渲染id到紋理,其實(shí)現(xiàn)需借助OpenGL的幀緩沖

    2024年02月04日
    瀏覽(29)
  • Unity編輯器擴(kuò)展 | 編輯器擴(kuò)展基礎(chǔ)入門

    Unity編輯器擴(kuò)展 | 編輯器擴(kuò)展基礎(chǔ)入門

    前言 當(dāng)談到游戲開發(fā)工具,Unity編輯器是一個(gè)備受贊譽(yù)的平臺(tái)。它為開發(fā)者提供了一個(gè)強(qiáng)大且靈活的環(huán)境,使他們能夠創(chuàng)建令人驚嘆的游戲和交互式體驗(yàn)。 然而,Unity編輯器本身也是可以擴(kuò)展和定制的,這為開發(fā)者提供了進(jìn)一步提升工作流程和增強(qiáng)功能的機(jī)會(huì)。 在Unity 編輯器

    2024年02月10日
    瀏覽(88)
  • 【Unity編輯器擴(kuò)展】 | 編輯器擴(kuò)展入門基礎(chǔ)

    【Unity編輯器擴(kuò)展】 | 編輯器擴(kuò)展入門基礎(chǔ)

    前言 當(dāng)談到游戲開發(fā)工具,Unity編輯器是一個(gè)備受贊譽(yù)的平臺(tái)。它為開發(fā)者提供了一個(gè)強(qiáng)大且靈活的環(huán)境,使他們能夠創(chuàng)建令人驚嘆的游戲和交互式體驗(yàn)。 然而,Unity編輯器本身也是可以擴(kuò)展和定制的,這為開發(fā)者提供了進(jìn)一步提升工作流程和增強(qiáng)功能的機(jī)會(huì)。 在Unity 編輯器

    2024年02月10日
    瀏覽(33)
  • Unity 可視化節(jié)點(diǎn)編輯器(GraphView、編輯器擴(kuò)展)

    Unity 可視化節(jié)點(diǎn)編輯器(GraphView、編輯器擴(kuò)展)

    ??前幾天把導(dǎo)師的項(xiàng)目打包發(fā)布交了一稿,這半個(gè)星期除了再把項(xiàng)目縫縫補(bǔ)補(bǔ)外(說實(shí)話項(xiàng)目做到后邊實(shí)在有些無聊,都是些瑣碎的東西而且自己也學(xué)不到什么,純粹是 浪費(fèi) 消磨時(shí)間)無聊逛Unity商店發(fā)現(xiàn)了個(gè)有意思的東西,說實(shí)話一開始我以為只是單純繪制的2D動(dòng)畫:

    2024年02月12日
    瀏覽(43)
  • Unity編輯器紫色

    紫色原因是因?yàn)榫庉嬈鲀?nèi)跑了其他平臺(tái)的shader兼容性導(dǎo)致的,需要?jiǎng)討B(tài)的去修改shader,主要用到Unity的api :? Shader.Find(shaderName); 具體的工具代碼如下: Shader的添加形式大概有兩種: 跟隨AssetBundle 打進(jìn)包里面,可以直接使用 ? ? ? 自建材質(zhì) ?

    2024年02月03日
    瀏覽(26)
  • Unity編輯器擴(kuò)展(外掛)

    Unity編輯器擴(kuò)展(外掛)

    每日一句:未來的樣子藏在現(xiàn)在的努力里 目錄 什么是編譯器開發(fā) C#特性[System.Serializable] 特殊目錄 命名空間 /*檢視器屬性控制*/ ?? ?//添加變量懸浮提示文字 ??? //給數(shù)值設(shè)定范圍(最小0,最大150) //指定輸入框,擁有5行 //默認(rèn)顯示5行,最多顯示10行內(nèi)容,再多用滾動(dòng)條控

    2024年01月24日
    瀏覽(25)
  • 修改unity代碼編輯器

    修改unity代碼編輯器

    將 ? Unity ?自帶的 MonoDevelop ?替換成微軟的 VS ?2017?編輯器。 操作步驟 : 第一步:選擇Edit選項(xiàng)卡下的Preferences..選項(xiàng) 第二步:選擇External Tools 第三步:修改右側(cè)的External Script Editor,選擇VS2017 ?有的小伙伴可能下拉框中沒有VS2017選項(xiàng),沒關(guān)系,點(diǎn)擊Brower..,找到VS2017的應(yīng)用程序

    2024年02月11日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包