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

henning

Treue Seele

  • »henning« ist der Autor dieses Themas

Beiträge: 132

Wohnort: mond

Beruf: Weltraumheld

  • Private Nachricht senden

1

22.08.2011, 19:25

java script: objecte im array sortieren

wie ist es möglich, objecte in einem array nach einer variable, wie zum deispiel der distans zum nullpunkt oder der position auf der x axe zu sortieren?

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

2

22.08.2011, 19:41

Passing in a function reference into array.sort()

As touched on already, array.sort() accepts an optional parameter in the form of a function reference (lets call it sortfunction). The format of this function looks like this:

C-/C++-Quelltext

1
2
3
4
5
array.sort(sortfunction)

function sortfunction(a, b){
//Compare "a" and "b" in some fashion, and return -1, 0, or 1
}

Quelle: http://www.javascriptkit.com/javatutors/arraysort.shtml

henning

Treue Seele

  • »henning« ist der Autor dieses Themas

Beiträge: 132

Wohnort: mond

Beruf: Weltraumheld

  • Private Nachricht senden

3

22.08.2011, 19:48

verstehe ich nicht ganz. wenn ich jetzt die variable position.x verwenden will, wie muss ich das machen?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

22.08.2011, 20:01

Davon ausgehend, dass das Array Objekte enthält, welche "position" Datenobjekte enthalten.

Quellcode

1
2
3
4
5
6
7
8
9
10
array.sort(sortfunction)

function sortfunction(a, b){
if(a.position.x < b.position.x)
  return 1;
else if(a.position.x > b.position.x)
  return -1;
else
  return 0;
}

Wobei ich jetzt nicht sicher bin ob die Rückgabewerte semantisch passen. Sonst einfach 1, -1 vertauschen.

henning

Treue Seele

  • »henning« ist der Autor dieses Themas

Beiträge: 132

Wohnort: mond

Beruf: Weltraumheld

  • Private Nachricht senden

5

22.08.2011, 20:29

danke erstmal.

aber die function wird in unity leider nicht unterstützt.kennt sich hier wer mit unity 3d aus?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

23.08.2011, 09:37

Es gibt hier jemanden, der meines Wissens ein Sciene-Fiction Game mit Unity3D und JavaScript macht. such bei Projekten und frag ihn ;)

dbGAMES

Treue Seele

Beiträge: 323

Wohnort: Frankfurt

Beruf: Student

  • Private Nachricht senden

7

23.08.2011, 10:44

Das geht natürlich auch in Unity, funktionierendes Beispiel (in ein neues JS schreiben, auf die Kamera ziehen und starten) aus den vorherigen Posts zusammengebastelt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function sf(a:Vector2, b:Vector2)
{
    if (a.x < b.x)
        return 1;
    else if (a.x > b.x)
        return -1;
    else
        return 0;
}

function Start()
{
    var arr = new Array();
    arr.Push(Vector2(3, 3));
    arr.Push(Vector2(8, 3));
    arr.Push(Vector2(1, 3));
    arr.Push(Vector2(45, 3));
    arr.Push(Vector2(4, 3));
    arr.Push(Vector2(9, 3));

    Debug.Log(arr);

    arr.Sort(sf);

    Debug.Log(arr);
}


Die Infos zum Sortieren stehen hier zwar nicht drin, aber es hilft mir Sicherheit bei anderen Problemen (falls dus nicht eh schon kennst): http://unity3d.com/support/documentation…ence/Array.html

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

8

23.08.2011, 10:49

Das was Unity verwendet ähnelt JavaScript nur, ist aber eine eigene "Sprache" UnityScript.

Sortieren kannst du entweder mit Array.Sort():

http://unity3d.com/support/documentation…Array.Sort.html
http://answers.unity3d.com/questions/222…tin-arrays.html

Oder einfacher per Linq, allerdings weiß ich nicht 100% genau wie dafür die Syntax in UnityScript wäre, ich versuche es dennoch mal:

C#-Quelltext

1
2
3
import System.Linq;

var sortedArray = myArray.OrderBy(function(entry) { return entry.position.x; });


Wie es wirklich mit US funktionieren müsste, muss ich mal nachschauen wenn ich an einem Rechner mit Unity dran bin. Zur not reicht auch Array.Sort vollkommen aus.

Werbeanzeige