Version: 2022.2
言語: 日本語
public void Finish ();
public void Finish (string[] removedDocuments);
public void Finish (Action threadCompletedCallback);
public void Finish (Action threadCompletedCallback, string[] removedDocuments);
public void Finish (Action<byte[]> threadCompletedCallback, string[] removedDocuments);
public void Finish (Action<byte[]> threadCompletedCallback, string[] removedDocuments, bool saveBytes);

パラメーター

threadCompletedCallback Callback invoked when the index is ready to be used.
removedDocuments Documents to be removed from current index (if any).
saveBytes Indicates if the system should return the binary stream of the index as a byte array.

説明

Finalizes the current index, sorting and compiling of all the indexes.

using System.Linq;
using UnityEditor;
using UnityEditor.Search;
using UnityEngine;

/// <summary>
/// SearchIndexer.Finish is always a threaded operation, meaning that all indexes
/// will be computed in a thread and Search will callback when the index is ready
/// to be used.
/// </summary>
static class Example_SearchIndexer_Finish
{
    [MenuItem("Examples/SearchIndexer/Finish")]
    public static void Run()
    {
        // Create an indexer and wait for indexing to complete in the current thread.
        var si = new SearchIndexer();
        si.Start();
        si.AddProperty("wait", "yes", si.AddDocument("Wait"));
        si.Finish();
        while (!si.IsReady())
            return;
        Debug.Assert(si.IsReady());

        // Reset the indexer and receive a callback when the indexing is completed.
        si.Start(clear: true);
        si.AddProperty("wait", "callback", si.AddDocument("Callback"));
        si.Finish(() => Debug.Log("Indexing is ready."));
        while (!si.IsReady())
            return;

        // Reset the indexer and receive a callback when the indexing is completed and backup the index.
        // With that override you can also indicate if you want any documents to be deleted
        si.Start(clear: false);
        si.AddProperty("wait", "callback", si.AddDocument("CallbackBytes"));
        si.AddProperty("wait", "callback", si.AddDocument("DeleteMe"));
        si.Finish((bytes) => Debug.Log($"Indexing is ready and its size is {bytes.Length}."), new string[] { "Callback", "DeleteMe" });
    }
}