Unitykoodaus, ongelmia ongelmia..

  • Keskustelun aloittaja Keskustelun aloittaja TSIGA
  • Aloitettu Aloitettu
Liittynyt
31.10.2016
Viestejä
1 524
Eli olen väsäämässä tällaistä, ihan simppeliä "click-to-move" juttua Unityllä, mutta nyt on kyllä ongelmia.. Prkl. Tässä ensinnä koodinpätkä alkuun, josko joku osaisi auttaa ongelmassa (ongelma/kysymys koodin alapuolella)

Koodi:
using UnityEngine;
using System.Collections;

public class WorldInceration : MonoBehaviour {
    NavMeshAgent playerAgent;

    void start()
    {
        playerAgent = GetComponent<NavMeshAgent>();
    }



    void Update()
        {
        if (Input.GetMouseButtonDown)(0) !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject
        GetInteraction ();
        }

    void GetInteraction()
    {

        Ray interactionRay = Camera.main.ScreenPointToRay (Input.mousePosition);
        RaycastHit InteractionInfo;
        if (Physics.Raycast (interactionRay, out InteractionInfo, Mathf.Infinity))
        {
            GameObject interactedObject = InteractionInfo.collider.gameObject;
            if (interactedObject.tag == "Interactable Object") {
                Debug.Log ("interactable interacted.");
            }
            else
            {
                playerAgent.destination = InteractionInfo.point;
            }   


        
        }
    
    }
}

Eli, nyt tuo herjaa sellaista kun; Error CS1525: Unexpected symbol '!', ja jos poistan !-merkin pois Unityenginen edestä, tulee seuraava ongelma:
error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement. Missä mättää tai mikä miulla mennyt v*tuilleen?
 
Eli, nyt tuo herjaa sellaista kun; Error CS1525: Unexpected symbol '!', ja jos poistan !-merkin pois Unityenginen edestä, tulee seuraava ongelma:
error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement. Missä mättää tai mikä miulla mennyt v*tuilleen?

Sulla on vahingossa kadonnut osa ton update()-metodin sisällöstä. Joko sieltä puuttuu joku AND (&&) tai sitten haluat sisäkkäisiä if-lauseita. Mutta se on nyt viturallaan, kuten tuossa yllä jo todettiin. Itsehän en Unitystä tiedä sinänsä yhtään mitään.
 
If-lauseen pitäisi tosiaan olla muotoa if (Input.GetMouseButtonDown(0)) eikä if (Input.GetMouseButtonDown)(0). Nykyinen versio ei yksinkertaisesti pysty toimimaan ennen tuon korjausta, vaikka muuttaisit mitä muuta.
 
Olet ilmeisesti yrittänyt kirjoittaa itse Unityn perus esimerkkiä mitään siitä ymmärtämättä tuolle isPointerOverGameObject ja se on mennyt päin peetä. Copy pasteta uudelleen tästä:

Unity - Scripting API: EventSystems.EventSystem.IsPointerOverGameObject

Koodi:
void Update ()
    {
        // Check if the left mouse button was clicked
        if(Input.GetMouseButtonDown(0))
        {
            // Check if the mouse was clicked over a UI element
            if(EventSystem.current.IsPointerOverGameObject())
            {
                Debug.Log("Clicked on the UI");
            }
        }  
    }
 
Suosittelisin Unityn rinnalla käyttämään jotain kunnon IDEä (esim Visual Studio), joka kertoisi helpoimmat virheet.
 
Hei, ei tosiaan oikeasti kannata yrittää koodata ilman jotain oikeaa työkalua.

Visual Studio on kai se "way to go" jos on lisenssi duunista / koulusta. Jos ei ole niin VS Code:ssa on ilmeisesti tyydyttävä tuki Unitylle.
 
Eiköhän myös ihan Unityn mukana tuleva MonoDevelop kerro tuollaiset virheet. Tosin muuten se vaikuttaakin erittäin köykäiseltä enkä ainakaan minä pysty suosittelemaan sitä kenellekään.

Visual Studio on kai se "way to go" jos on lisenssi duunista / koulusta.
Tai sitten voi käyttää ilmaista Visual Studio Communityä.
 
Muistelen, että joskus muutama vuosi sitten tosta puuttuu jotain relevanttia mutta jos se nykyään toimii nii se on hyvä ;)
Visual Studio Express versiosta puuttui muutama tärkeä työkalu, mutta tässä uudessa Communityssä on kaikki tärkeimmät herkut ihan ilmaiseksi. Codessa on taas omat ongelmansa, mm. joutuu käyttämään vanhentunutta versiota C# tuesta koska Unity ei tue uutta syntaksia.
 
Eiköhän myös ihan Unityn mukana tuleva MonoDevelop kerro tuollaiset virheet. Tosin muuten se vaikuttaakin erittäin köykäiseltä enkä ainakaan minä pysty suosittelemaan sitä kenellekään.


Tai sitten voi käyttää ilmaista Visual Studio Communityä.
...joka kaiken lisäksi tulee nykyään Unityn mukana Windowsille. MonoDevelop on paketissa enää vain OS X- ja Linux-versioille.
 

Statistiikka

Viestiketjuista
261 296
Viestejä
4 534 279
Jäsenet
74 783
Uusin jäsen
subs

Hinta.fi

Back
Ylös Bottom