Presets
Menerapkan preset default ke Aset oleh folder

Mendukung preset

Di Editor Anda scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary
, gunakan kelas ObjectFactory untuk membuat GameObjectsObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary
baru, komponen dan Aset. Saat membuat item ini, kelas ObjectFactory secara otomatis menggunakan Presets default. Script Anda tidak perlu mencari dan menerapkan default Presets, karena ObjectFactory menangani ini untuk Anda.

Dukungan untuk jenis baru

Untuk mendukung dan mengaktifkan Presets secara default, kelas Anda harus mengherit dari salah satu berikut:

Preset InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary
menciptakan instance sementara kelas Anda, sehingga pengguna dapat memodifikasi nilai-nilainya, jadi pastikan kelas Anda tidak mempengaruhi atau mengandalkan benda lain seperti nilai statis, Aset Proyek atau instance SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
.

Tip: Menggunakan atribut CustomEditor adalah opsional.

Gunakan contoh kasus: Pengaturan awal di jendela editor kustom

Ketika mengatur kelas EditorWindow kustom dengan pengaturan yang dapat menggunakan Presets:

  • Gunakan Login Sitemap untuk menyimpan salinan pengaturan Anda. Ini bisa memiliki atribut CustomEditor juga. Sistem Preset menangani objek ini.

  • Selalu gunakan Inspektur ScriptableObject sementara ini untuk menunjukkan pengaturan Preset pada UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
    Lihat di Glossary
    Anda. Ini memungkinkan pengguna Anda untuk memiliki UI yang sama di EditorWindow Anda dan ketika mengedit Presets yang tersimpan.

  • Mengekspos tombol Preset dan gunakan implementasi PresetSelectorReceiver Anda sendiri untuk menjaga pengaturan EditorWindow up-to-date ketika Preset dipilih di jendela Select Preset.

Contoh skrip berikut menunjukkan cara menambahkan pengaturan Preset ke EditorWindow sederhana.

Contoh skrip ini menunjukkan sebuah ScriptableObject yang membuat dan menunjukkan pengaturan di jendela kustom (diterima ke file yang disebut WordPress.org):

using UnityEngine;

// Temporary ScriptableObject used by the Preset system

public class MyWindowSettings : ScriptableObject
{
    [SerializeField]
    string m_SomeSettings;
    
    public void Init(MyEditorWindow window)
    {
        m_SomeSettings = window.someSettings;
    }
    
    public void ApplySettings(MyEditorWindow window)
    {
        window.someSettings = m_SomeSettings;
        window.Repaint();
    }
}

Contoh script dari PresetSelectorReceiver yang memperbarui ScriptableObject yang digunakan di jendela kustom (dijual ke file yang disebut WordPress.org:

using UnityEditor.Presets;

// PresetSelector receiver to update the EditorWindow with the selected values.

public class MySettingsReceiver : PresetSelectorReceiver
{
    Preset initialValues;
    MyWindowSettings currentSettings;
    MyEditorWindow currentWindow;
    
    public void Init(MyWindowSettings settings, MyEditorWindow window)
    {
        currentWindow = window;
        currentSettings = settings;
        initialValues = new Preset(currentSettings);
    }
    
    public override void OnSelectionChanged(Preset selection)
    {
        if (selection != null)
        {
            // Apply the selection to the temporary settings
            selection.ApplyTo(currentSettings);
        }
        else
        {
            // None have been selected. Apply the Initial values back to the temporary selection.
            initialValues.ApplyTo(currentSettings);
        }
        
        // Apply the new temporary settings to our manager instance
        currentSettings.ApplySettings(currentWindow);
    }
    
    public override void OnSelectionClosed(Preset selection)
    {
        // Call selection change one last time to make sure you have the last selection values.
        OnSelectionChanged(selection);
        // Destroy the receiver here, so you don't need to keep a reference to it.
        DestroyImmediate(this);
    }
}

Contoh script dari EditorWindow yang menunjukkan pengaturan kustom menggunakan Inspektur ScriptableObject sementara dan tombol Preset (diterima ke file yang disebut Editor/MyEditorWindow.cs):

using UnityEngine;
using UnityEditor;
using UnityEditor.Presets;

public class MyEditorWindow : EditorWindow

{
    // get the Preset icon and a style to display it
    private static class Styles
    {
        public static GUIContent presetIcon = EditorGUIUtility.IconContent("Preset.Context");
        public static GUIStyle iconButton = new GUIStyle("IconButton");

    }

    Editor m_SettingsEditor;
    MyWindowSettings m_SerializedSettings;
    
    public string someSettings
    {
        get { return EditorPrefs.GetString("MyEditorWindow_SomeSettings"); }
        set { EditorPrefs.SetString("MyEditorWindow_SomeSettings", value); }
    }
   
    // Method to open the window
    [MenuItem("Window/MyEditorWindow")]
    static void OpenWindow()
    {
        GetWindow<MyEditorWindow>();
    }

    void OnEnable()
    {
        // Create your settings now and its associated Inspector
        // that allows to create only one custom Inspector for the settings in the window and the Preset.
        m_SerializedSettings = ScriptableObject.CreateInstance<MyWindowSettings>();
        m_SerializedSettings.Init(this);
        m_SettingsEditor = Editor.CreateEditor(m_SerializedSettings);
    }

    void OnDisable()
    {
        Object.DestroyImmediate(m_SerializedSettings);
        Object.DestroyImmediate(m_SettingsEditor);
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("My custom settings", EditorStyles.boldLabel);
        GUILayout.FlexibleSpace();
        // create the Preset button at the end of the "MyManager Settings" line.
        var buttonPosition = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight, Styles.iconButton);

        if (EditorGUI.DropdownButton(buttonPosition, Styles.presetIcon, FocusType.Passive, Styles.iconButton))
        {
            // Create a receiver instance. This destroys itself when the window appears, so you don't need to keep a reference to it.
            var presetReceiver = ScriptableObject.CreateInstance<MySettingsReceiver>();
            presetReceiver.Init(m_SerializedSettings, this);
            // Show the PresetSelector modal window. The presetReceiver updates your data.
            PresetSelector.ShowSelector(m_SerializedSettings, null, true, presetReceiver);
        }
        EditorGUILayout.EndHorizontal();
        
        // Draw the settings default Inspector and catch any change made to it.
        EditorGUI.BeginChangeCheck();
        m_SettingsEditor.OnInspectorGUI();

        if (EditorGUI.EndChangeCheck())
        {
            // Apply changes made in the settings editor to our instance.
            m_SerializedSettings.ApplySettings(this);
        }
    }
}

2017–03–27 Sitemap Fitur baru dalam Oktober 2018

Presets
Menerapkan preset default ke Aset oleh folder