Neu erstellte Prefab Clones sollten dieselbe Farbe wie Hauptprefab haben?

Hallo liebe Fragler,

Zuerst erstelle ich ein Prefab. Wenn ich r drücke, ist die Farbe des Prefabs rot. Jetzt drücke ich den Knopf c und das Prefab wird geklont. Die Farbe des Clones ist jetzt standardmäßig weiß. Das erste Prefab hat jedoch die Farbe Rot, also sollte der Clone auch dieselbe Farbe haben.

Ich habe versucht, die Farbe des Prefabs zu bekommen und sie dann dem Klon zu geben. Leider erfolglos.

Meine Frage ist nun: Wie kann ich dem Clone des Prefabs die gleiche Farbe geben wie dem Hauptprefab? Wenn ich drei Clone von Prefabs erstelle und beispielsweise b drücke, sollten alle vier Prefabs blau sein.

Schau dir meinen Code unten an:

public class globalControl : MonoBehaviour
{
  public GameObject prefabInstance;

  List<Object> prefabInstanceClones = new List<Object>();

  GameObject capsule, sphere, cylinder;

  private void Start()
  {
    capsule = GameObject.Find("Capsule");
    sphere = GameObject.Find("Sphere");
    cylinder = GameObject.Find("Cylinder");
  }

  void Update()
  {
    Debug.Log(prefabInstanceClones.Count);

    if (Input.GetKeyDown("c"))
    {
      prefabInstanceClones.Add(Instantiate(prefabInstance, transform.position, Quaternion.identity));
    }

    if (Input.GetKeyDown("d"))
    {
      var last = prefabInstanceClones[prefabInstanceClones.Count - 1];
      prefabInstanceClones.Remove(last);
      Destroy(last);
    }

    if (Input.GetKeyDown("r"))
    {
      capsule.GetComponent<Renderer>().material.color = Color.red;
      sphere.GetComponent<Renderer>().material.color = Color.red;
      cylinder.GetComponent<Renderer>().material.color = Color.red;
    }
    else if (Input.GetKeyDown("b"))
    {
      capsule.GetComponent<Renderer>().material.color = Color.blue;
      sphere.GetComponent<Renderer>().material.color = Color.blue;
      cylinder.GetComponent<Renderer>().material.color = Color.blue;
    }
    else if (Input.GetKeyDown("g"))
    {
      capsule.GetComponent<Renderer>().material.color = Color.green;
      sphere.GetComponent<Renderer>().material.color = Color.green;
      cylinder.GetComponent<Renderer>().material.color = Color.green;
    }
  }
}

Danke sehr im Voraus, freue mich auf eure Antworten! 😃

Programmierung, CSharp, Visual Studio, Unity, unity3d
2 Antworten
Python: Kann mir jemand beim Programmieren helfen?

Hallo erstmal. Ich bin Anfänger und bräuchte eure Hilfe.

Ich soll mit Raycasting etwas in Python implementieren.

Das ist die Aufgabe:

import math

class Canvas():
  def __init__(self, width, height, background = " "):
    """Initialisation method for the Canvas class"""
    pass

  def render(self):
    """
    Rendering method for the raytracer. Renders all objects attached to the canvas.
    Everything is drawn using raycasting. The canvas is positioned at (0.0, 0.0, -1.0) and has the endpoints(-1.0, -1.0, -1.0), (-1.0, 1.0, -1.0), (1.0, 1.0, -1.0), (1.0, -1.0, -1.0).
    The camera is positioned at (0.0, 0.0 , -10.0).
    Rays are send from the camera to the sampling points on the canvas.
    You do not need to implement clipping, backface culling or similar methods.
    Make sure to send one ray per entry in the canvas.
    In addition make sure that only the nearest collision is drawn per ray, i.e. implement z-occlusion.
    The color returned by a given ray is the color of the nearest collison's hit object.
    When no attached object is hit, the color returned for that ray is the background of the canvas.
    Returns the content of the canvas as a string and does *not* print it.
    """
    pass

class Sphere():
  def __init__(self, origin, radius, color):
    """
    Initialisation method for Sphere class
    Expects the origin as an arrays in the form of [x, y, z].
    Radius is the radius of the sphere.
    Color is the color the triangle is drawn in.
    """
    pass

class Triangle():
  def __init__(self, a, b, c, color):
    """
    Initialisation method for the Triangle class
    Expects points as arrays in the form of [x, y, z]. Color is the color the triangle is drawn in.
    """
    pass
Computer, Programm, Programmieren, Programmierung, Informatik, Python
2 Antworten

Was möchtest Du wissen?