Jump to content
Unity Insider Forum

[gelöst] Array in Unity füllen/zuweisen funktioniert nicht


amdbuster

Recommended Posts

Hi.

Ich mache gerade ein tutorial, und da wurde ein Array erstellt, in dem ich dann in Unity Objekte zuweisen soll. Nur klappt das bei mir nicht(nicht mit Array, mit einer Liste geht das).

Hier mal die Codes wie im Tut:

Baue:

public class Baue : MonoBehaviour
{
	 public BauplatzElement[] grid;                  // alle bauplatzelemente
}

 

Bauplatzelement:

public class BauplatzElement : MonoBehaviour 
{
	public int bauplatzID;
    public bool belegt;
}

wenn ich jetzt in Unity die Objekte zuweisen möchte, geht das nicht(siehe Bild).

arrayprobuuk6b.jpg

Bin die Videos nochmal durchgegangen, finde aber keine Fehler.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Baue(hatte zum testen mal den restlichen Code deaktiviert):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Baue : MonoBehaviour
{

    public BauplatzElement curSelectedGridElement;
    public BauplatzElement curHoveredGridElement;    //mit der maus darüber
    public BauplatzElement[] grid;                  // alle bauplatzelemente
}
/*
  [Header("Farben")]
  public Color colOnHover = Color.white;
  public Color colOnBesetzt = Color.red;

  private Color colOnNormal;
  private RaycastHit mausTreffer;         //zur ekennung des spielfeldes mittels einem ray


      void Awake ()
      {
          // die ursprüngliche Farbe des grids wiederherstellen 
          colOnNormal = grid[0].GetComponentInChildren<MeshRenderer>().material.color;
      }


      void Update ()
      {
          // ray = da wo sich die maus im Bildschirm befindet
          Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);


          if(Physics.Raycast(ray, out mausTreffer))    // wo ist die maus
          {
              // wenn baupl.element von maus getroffen wurde, dann in element "be" speichern
              BauplatzElement be = mausTreffer.transform.GetComponent<BauplatzElement>();         //ist die maus über einem bauplatz

              if(!be)     
              {
                  if (curHoveredGridElement)
                      curHoveredGridElement.GetComponent<MeshRenderer>().material.color = colOnNormal;
                  return;
              }

              if(Input.GetMouseButton(0))
              {
                  curSelectedGridElement = be;
              }

              if(be!=curHoveredGridElement)       // wenn baupl.element nicht hervorgehoben
              {
                  if(!be.belegt)
                  {
                      //wenn nicht besetzt normale farbe
                      mausTreffer.transform.GetComponent<MeshRenderer>().material.color = colOnNormal;  
                  }
                  else
                  {
                      //ansonsten auf besetztfarbe
                      mausTreffer.transform.GetComponent<MeshRenderer>().material.color = colOnBesetzt;  
                  }
              }

              // gibte es eines und ist es nicht gleich be
              if(curHoveredGridElement && curHoveredGridElement != be)
              {
                  curHoveredGridElement.GetComponent<MeshRenderer>().material.color = colOnNormal;
              }

              curHoveredGridElement = be;

          }

          else   //was passiert wenn kein bauplatz getroffen wurde
          {
              //existiert ein baupl. dann die farbe auf ursprung
              if(curHoveredGridElement)
                  curHoveredGridElement.GetComponent<MeshRenderer>().material.color = colOnNormal;
          }
      }*/

und beim Bauplatz fehlt eigentlich nur:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

Das Tutorial ist Der Unity 2017 & Blender Komplettkurs: Erstelle Top 3D Games auf Udemy.

Im Anhang ist ein Screenshoot vom Baue Code.

baue.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

@amdbuster

Hast du irgendwelche Errors? Wenn ich dein Code von Bauplatzelement kopiere funktioniert das nicht. Der int bauplatzID ist bei  grau. Irgend ein Zeichen versteht er nicht, wenn ich es selber eintippe gehts.

vor 19 Stunden schrieb amdbuster:

public int bauplatzID;

Sollte eigentlich blau sein.

1. Sind die Bauplatzelemente den auch in der Scene vorhanden?

2. Haben die Bauplatzelemente denn auch das Bauplatzelement Script drauf?

Also bei mir geht es...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...