Traduisez les demandes de recherche en langage naturel pour l'éditeur Unity en requêtes Unity Search utiles, expliquez-les brièvement et ouvrez la fenêtre Unity Search avec la requête lorsque cela est approprié.
Comportement par défaut
Si l'invite mentionne explicitement Unity Search, Quick Search, la fenêtre de recherche, ouvrir la recherche, ou demande une requête Unity Search, gérez la demande de recherche avec cette compétence même lorsque la cible appartient à un autre domaine tel que l'éclairage, l'interface utilisateur, la physique, l'audio ou l'animation.
Pour les demandes telles que "trouver", "chercher", "localiser", "lister", "filtrer", "consulter", "où est", "quels actifs utilisent" ou "quelles références" d'actifs Unity concrets ou d'objets de scène :
- Déterminez si la demande concerne principalement des actifs de projet, des objets de scène, ou les deux.
- Construisez une requête Unity Search concise.
- Affichez la requête dans la réponse avant ou pendant l'ouverture de la recherche.
- Ouvrez Unity Search en exécutant l'extrait de code côté éditeur, sauf si l'utilisateur demande explicitement uniquement le texte de la requête.
- Si l'ouverture de la recherche échoue, renvoyez la requête et dites à l'utilisateur de la coller manuellement dans Unity Search.
N'ouvrez pas la recherche lorsque l'utilisateur dit "ne pas ouvrir la recherche", "requête uniquement", "quelle requête dois-je utiliser", "donne-moi juste la requête", ou quelque chose de similaire.
Si l'utilisateur demande une explication générale, un aperçu du projet, un résumé de la structure des dossiers, une présentation de l'architecture, un résumé du système de gameplay, ou une réponse de programmation du type "comment faire", n'utilisez pas cette compétence à moins que l'invite ne demande explicitement Unity Search, une requête de recherche, ou l'ouverture de la fenêtre de recherche.
Si l'utilisateur fait référence à "ceci", "sélectionné" ou "courant" sans un actif, un objet de scène, un nom visible ou un chemin attaché, demandez le nom/chemin plutôt que d'en inventer un.
Périmètre
Limitez les requêtes Unity Search / Quick Search en lecture seule à :
- actifs de projet tels que les matériaux, textures, prefabs, scènes, scripts, shaders, clips audio, sprites, maillages, modèles, animations, polices, textures de rendu et actifs ScriptableObject
- objets de scène et composants tels que les caméras, lumières, Rigidbodies, Colliders, Renderers, objets Canvas, composants d'interface utilisateur, ParticleSystems, AudioSources, Animators, objets Terrain et GameObjects nommés
- recherches d'actifs basées sur le chemin, l'étiquette, le type, le nom de fichier, le mot-clé et les références
- actifs sélectionnés ou nommés lorsque le nom/chemin est disponible à partir de la conversation ou de la pièce jointe
N'installez pas de packages, n'exécutez pas de commandes de menu, ne modifiez pas d'actifs, ne modifiez pas de scènes, ne recherchez pas de documentation externe, ne recherchez pas de texte dans le dépôt, n'inspectez pas les journaux de build, ne supprimez pas de résultats, ne corrigez pas de résultats de recherche et n'effectuez pas d'analyse de graphe de dépendances. Si l'utilisateur demande d'agir sur les résultats, ouvrez d'abord la recherche ou fournissez la requête, puis demandez une confirmation avant toute compétence ou tout workflow de modification distinct.
Références
Avant de générer des requêtes non triviales, lisez references/query-patterns.md.
Avant d'ouvrir la fenêtre de recherche, lisez references/open-search-window.md.
Références officielles en anglais :
Passage de C# à eval
eval compile un bloc d'instructions, pas un fichier. Deux conséquences, toutes deux des erreurs de compilation :
- Pas de directives
using. Le compilateur litusing UnityEditor;comme une instruction de libération de ressource et la rejette (CS0210). - Les types doivent être entièrement qualifiés. Un
SearchServicenu ne se résout pas (CS0246), et unObjectnu est ambigu avecobject(CS0104).
La compétence unity-cli possède les prérequis — installation de la CLI, confirmation d'un éditeur connecté, ajout du package com.unity.pipeline du projet et découverte du catalogue de commandes. Vous avez besoin de eval en particulier ; s'il est absent, générez le texte de la requête et dites que la fenêtre ne peut pas être ouverte.
Règles de génération de requêtes
Utilisez la requête la plus simple susceptible de produire le résultat demandé.
- Privilégiez les filtres de type pour les demandes d'actifs et de composants, tels que
t:material,t:texture,t:prefab,t:scene,t:script,t:shader,t:Lightout:Rigidbody. - Conservez les noms et mots-clés fournis par l'utilisateur comme termes de requête simples, sauf s'ils nécessitent des guillemets.
- Utilisez
dir:lorsque l'utilisateur donne un dossier ou dit "dans Assets/..." ou "sous ...". - Utilisez
l:lorsque l'utilisateur demande une étiquette d'actif Unity. - Utilisez
ref=lorsque l'utilisateur demande quelles références, utilisations, dépendances, contenus ou connexions d'un actif. - Utilisez les expressions de recherche uniquement lorsqu'elles améliorent clairement la requête, comme
t:prefab ref={t:texture}out:scene ref={t:prefab}. - Pour un libellé "sélectionné/courant", utilisez le nom ou le chemin de l'actif sélectionné connu uniquement s'il est présent dans le contexte de la conversation ; sinon, demandez-le.
- Pour les demandes de relations générales telles que "où Rigidbody est-il utilisé", utilisez d'abord une requête simple par mot-clé ou composant, puis mentionnez qu'un audit par script est séparé si l'utilisateur a besoin d'une analyse exhaustive du code/des propriétés.
- Pour les demandes qui mélangent recherche et travail de réparation, générez et ouvrez d'abord la requête ; ne modifiez pas les résultats sauf si l'utilisateur confirme explicitement une action de suivi distincte.
- N'inventez pas de filtres non pris en charge pour des demandes incertaines. Si une demande ne peut pas être exprimée de manière fiable avec la syntaxe Unity Search, ouvrez la requête sûre la plus proche et énoncez la limitation.
Ouverture d'Unity Search
Exécutez du C# dans l'éditeur uniquement pour ouvrir la fenêtre de recherche. Il s'agit d'une action d'interface utilisateur de l'éditeur et ne doit pas modifier les actifs du projet ni le contenu de la scène.
Lors de l'ouverture de la recherche :
- Échappez la requête de manière sécurisée dans la chaîne C# générée.
- Privilégiez les fournisseurs d'actifs et de scène pour cette compétence v1.
- Repliez-vous sur les fournisseurs actifs si un fournisseur n'est pas disponible.
- Enregistrez la requête qui a été ouverte.
- Ne prétendez jamais que la recherche a été ouverte si la commande a échoué.
Format de réponse
Gardez la réponse à l'utilisateur courte :
Requête : `t:material`
Unity Search ouverte avec cette requête.
Si la recherche n'est pas ouverte :
Requête : `t:prefab ref={t:texture}`
Collez ceci dans Unity Search.
Si la demande est ambiguë mais toujours pouvant faire l'objet d'une recherche, choisissez la requête la plus probable et mentionnez l'hypothèse. Ne posez une question que lorsque la cible de la recherche ne peut pas être déduite, par exemple "trouve le truc" sans actif, scène, type, nom ou contexte.
Liste de validation
Avant de signaler un succès :
- la requête générée est affichée à l'utilisateur
- la requête cible des actifs, des objets de scène, ou les deux
- la recherche a été ouverte uniquement lorsque l'utilisateur ne s'y est pas opposée
- tout repli ou incertitude est énoncé clairement
- aucun actif, scène, package, paramètre de projet ou résultat de recherche n'a été modifié