Jump to content
Unity Insider Forum
Sign in to follow this  
Strooja0108

Einmalige Skripte instanzieren?

Recommended Posts

Hallo Leute,

ich bin nach langer Abwesenheit auch mal wieder da.Hoffe es geht allen gut. Ich habe da mal eine Frage zu "sauberen"programmieren(keine Ahnung ob das so passt ^^). Ich habe knapp 20 Skripte die alle auf das Skript  Timescript zugreifen . In all meinen 20 Skripten habe ich deshalb die Zeile

 public Timescript timescript;

stehen und im Inspektor weise ich dann dieses Skript zu.Das selbe mache ich noch mit 5-10 anderen Skripten und 10 Objekten.Jedesmal das selbe. Da muss es doch einen deutlich besseren Weg geben. Habe was von static gelesen womit das auch scheinbar gut funktioniert. Ist das denn die richtige Loesung? Ich habe verstanden das static geht, weil es Klassen bezogen ist und nicht Objekt bezogen.Da ich jedes Skript nur einmal benutze sollte das also klappen. Bei Objekten ,wie zum Beispiel einen Button klappt das ja nicht,da das Objekt bezogen werde. Zum Beispiel moechte ich aus 10 verschienden Skripten ,den selben Button interactable, true oder false setzen koennen. Ohne den in jedem Skript neu definieren zu muessen. Wie geht sowas am besten? Und wie geht sowas mit einem Skript am besten?

 

Wuerde mich sehr ueber eine Loesung freuen,damit ich meine Skripte mal aufraeumen kann.

Share this post


Link to post
Share on other sites

Was du schreibst, klingt alles richtig. Was macht das Time-Script denn? Je nach dem, was es macht (und wie!), wäre eine Umstellung auf static sinnvoll oder eher weniger.

  • Like 1

Share this post


Link to post
Share on other sites

Timescript macht vieles, wie zum Beispiel  die Zeit generieren,oder bestimmte events.Von einem anderen script aus gucke ich dann im Timescript nach wie spaet es ist und dementsprechend kommt eine Textbox wo drin steht"Komm bite zum Fruehstueck/Mittagessen/Abendessen". Ich benutze halt scripte oft um es einfach ueberscihtlicher fuer mich zu machen, oder um scripte zu pausieren oder weiterlaufen zu lassen.Der einzige weg den ich allerdings kenne wie das geht,ist einfach das gameobject auf dem das skript liegt zu aktivieren oder deaktivieren. Das Problem ist halt das ich so viele verweise zwischen den ganzen Skripten habe das der definitionsbereich in jedem skript schon super lang ist und fast immer gleich aussieht.Aber ich denke dann kann ich ja alle skripte static setzen die nur einmal vorkommen und object unabhaengig sind,richtig?Sollte ich dann einfach alle variablen static setzen oder reicht es die Klasse static zu setzen und die variablen werden dann automatisch static? Wie mache ich das denn aber bei einem Button? Ich habe einen Button den ich von 10 Skripten aktivieren oder deaktivieren moechte.Muss ich den in allen Skripten definieren oder geht das auch einfacher?Mit static gehts ja nicht weil man einem static gameobject kein object zuweisen kann im inspector.

 

Share this post


Link to post
Share on other sites
vor 17 Stunden schrieb Strooja0108:

der definitionsbereich in jedem skript schon super lang ist und fast immer gleich aussieht.

Das ist auf jeden Fall ein ganz schlechtes Zeichen.

vor 17 Stunden schrieb Strooja0108:

Aber ich denke dann kann ich ja alle skripte static setzen die nur einmal vorkommen und object unabhaengig sind,richtig?

Ja, aber wenn das viele sein sollten, läuft auch etwas schief.

vor 17 Stunden schrieb Strooja0108:

Sollte ich dann einfach alle variablen static setzen oder reicht es die Klasse static zu setzen und die variablen werden dann automatisch static?

Eine statische Klasse tut nur drei Dinge: Verhindern, dass es Instanzen davon geben kann, Vererbung gibt's nicht mehr und alle Felder und Methoden müssen statisch sein. Letzteres muss man aber immer noch hinschreiben.

vor 17 Stunden schrieb Strooja0108:

Muss ich den in allen Skripten definieren oder geht das auch einfacher?

Kommt wirklich drauf an. Ohne den Code oder eine schematische Darstellung des Systems (z.B. ein UML-Diagramm) kann man da nicht so viel zu sagen.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...