Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Logix

Frischling

  • »Logix« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Bremen

  • Private Nachricht senden

1

13.09.2013, 17:42

Unity Java Script datei frage

Hallo, ich habe eine Frage, undzwar ich habe in einer .js datei einen Zähler, der zählt wie oft man etwas angeklickt hat, ich wollte fragen wie ich in einer anderen datei es anzeigen lasse, also wie ich die "funktion" den "score" mit rübernehme.

in der haupt js datei klappt es wunderbar

GUI.Label (Rect(10,10,100,20), "Punkte: " + score);

aber ich weiß nicht wie ich die funktion "score" mit rübernehme in eine andere js datei.

imakemygame

Treue Seele

Beiträge: 141

Wohnort: Hamburg

Beruf: Fachinformatiker // Service Techniker

  • Private Nachricht senden

3

14.09.2013, 09:18

Also wenn deine variable score in deinem Script als public deklariert wurde, dann kannst du in deinem anderen Script auf score zugreifen mit
GetComponent(nameDesScripts).score. da müssen beide scripts aber auf dem gleichen gameobject liegen. wenn sie auf unterschiedlichen gameobjects liegen musst du erst das gameobject suchen mit zum Beispiel
Gameobject.find(namedesobjects).GetComponent(namedesscripts).score
Nach Objekten aber am besten nicht Update Funktionen suchen sondern einmal am Anfang und sich in einer variable ablegen

Ps das wurde mit Handy getippt. Groß klein schreibung nicht ganz korrekt

Superwayne

Treue Seele

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

4

15.09.2013, 16:18

Dazu gibt es zwei Möglichkeiten. Einerseits mit einer als public deklarierten Variabel wie bereits beschrieben wurde oder indem du "score" mit SendMessage an das andere script verschickst.
In dem Script, wo score definiert wird, suchst du das Objekt, mit dem anderen Script und benutzt dann SendMessage (z.B. GameObject.FindGameObjectWithTag("objectThatNeedsScore").SendMessage("UpdateScore", score);). In dem anderen Script brauchst du dann eine Funktion mit dem Namen aus SendMessage ("UpdateScore" im Beispiel) und schreibst als Paramater noch z.B. float/int newScore (je nachdem, ob du mit komma arbeitest oder nicht) dazu.
Also z.B. function UpdateScore(int newScore){ }.
Da kannst du dann den neuen Wert von Score in die andere Funktion übernehmen.

Logix

Frischling

  • »Logix« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Bremen

  • Private Nachricht senden

5

15.09.2013, 19:22

Ich glaube nicht, dass `score' eine Funktion is.

ich habe Score zu einer funktion gemacht.

var score = GetComponent(scriptPlayer);
GUI.Label(Rect(10,10,100,40), "Gewonnen" + score);

Es funktioniert halbwegs, also es zeigt gewonnen, aber den score nicht an.
Komischerweise zählt er den Score in der anderen Datei.

function Update () {

if (Input.GetMouseButton(0))
{
var hit : RaycastHit;
var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);

if (Physics.Raycast(ray, hit, rayDistance))
{
if (hit.transform.tag == tagName)
{


var enemyScript = hit.transform.GetComponent(scriptEnemy);
enemyScript.numberOfClicks -= 1;
if (enemyScript.numberOfClicks == 0)
{
score += enemyScript.enemyPoint;
}
}
else
{
print("This is not an Enemy");
}
}
}

}
Das ist der Script.

function OnGUI () {

GUI.Label (Rect(10,10,100,20), "Punkte: " + score);

Der funktioniert direkt in der Datei. aber leider nicht in der anderen.
Ach könnte es sein weil +score nur hochgezählt wird, und wenns spiel ende ist das es sich dannach wieder löscht?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

6

16.09.2013, 10:18

Ich glaube nicht, dass `score' eine Funktion is.

ich habe Score zu einer funktion gemacht.

var score = GetComponent(scriptPlayer);
GUI.Label(Rect(10,10,100,40), "Gewonnen" + score);

Hast du nicht. ;)

Schau dir nochmal an, was GetComponent macht.

http://docs.unity3d.com/Documentation/Sc…tComponent.html

EDIT:
Aber bitte erst, nachdem du dir nochmal den Unterschied zwischen einer Variable und einer Funktion klargemacht hast :D!
WIP Website: kevinheese.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »KeksX« (16.09.2013, 10:23)


Werbeanzeige