Visa text på Object Touch i Unity

Välkommen till denna Unity handledning, där du lär dig hur du får text att visas när du rör vid ett objekt i ditt spel. Denna enkla interaktion kan lägga till ett uppslukande element till ditt projekt. Denna handledning kommer att fungera på både mobil och dator.

Steg 1: Skapa ett Unity-projekt

Om du inte har gjort det ännu, börja med att öppna Unity och skapa ett nytt 3D-projekt. Se till att du har de nödvändiga tillgångarna installerade för din föredragna utvecklingsmiljö.

Steg 2: Importera 3D-objekt

Importera ett 3D-objekt till din scen som representerar objektet som spelarna kommer att interagera med. Detta kan vara en kub, sfär eller något annat föremål som passar ditt spel.

Steg 3: Lägg till Collider

Fäst en kolliderarkomponent till ditt 3D-objekt. Detta gör det möjligt för den att upptäcka när andra objekt interagerar med den. Vanliga kolliderartyper inkluderar Box Collider, Sphere Collider eller Mesh Collider, beroende på ditt objekts form.

Steg 4: Skapa duk och text

Skapa en UI Canvas genom att högerklicka i scenhierarkin, välja UI och sedan Canvas. Inuti duken lägger du till en textkomponent som visar ditt meddelande.

Steg 5: Ställ in Canvas till World Space

Ändra renderingsläget för Canvas-komponenten till 'World Space'. Detta gör att duken kan existera i 3D-utrymmet i ditt spel.

Steg 6: Placera Canvas

Justera dukens position så att den är i linje med ditt 3D-objekt. Detta säkerställer att texten visas nära objektet när den utlöses.

Steg 7: Skriv manus

Skriv ett script som kommer att upptäcka när spelaren interagerar med objektet. När interaktion inträffar, aktivera Canvas och ställ in textkomponentens innehåll. Kontrollera exempelskriptet nedan:

'ObjectInteraction.cs'

using UnityEngine;
using UnityEngine.UI;

public class ObjectInteraction : MonoBehaviour
{
    public GameObject canvas;
    public Text displayText;

    private void Start()
    {
        canvas.SetActive(false);
    }

    private void Update()
    {
        // Use inline conditional to determine input position based on platform
        Vector3 inputPosition = (Input.touchCount > 0) ? Input.GetTouch(0).position : (Vector3)Input.mousePosition;

        // Raycast to determine if the touch or click hits the object
        Ray ray = Camera.main.ScreenPointToRay(inputPosition);

        RaycastHit hit;
        if (Physics.Raycast(ray, out hit) && hit.collider.gameObject == gameObject)
        {
            // Activate the canvas and set the text
            canvas.SetActive(true);
            displayText.text = "Your message here!";
        }
    }
}

Steg 8: Lägg till skript till objekt

Bifoga ett C#-skript till ditt 3D-objekt, som kommer att hantera interaktionslogiken och tilldela alla nödvändiga variabler.

Steg 9: Testa ditt spel

Kör ditt spel och testa interaktionen. Texten ska visas när du klickar eller trycker på det angivna objektet.