DreamGamer
Lieutenant
- Registriert
- Feb. 2017
- Beiträge
- 572
Guten Morgen miteinander, ich sitze jetzt seit längeren an einem Projekt, an dem ich einfach festhänge. Ich möchte einfach Objekte fallen lassen und sie, sobald sie nicht mehr sichtbar sind löschen. Dafür habe ich ein OutOfWindow Skript für die Objekte(Prefab) aber sobald diese gelöscht werden sollten kommt jedes mal derselbe Fehler:
Ich arbeite leider noch nicht, solange mit Unity weshalb mir Google helfen musste. Nur selbst dort habe ich nichts gefunden das mir geholfen hat(vllt. bin ich auch einfach schlecht im Googeln oder google falsch) deswegen frage ich hier
Ich habe unten einmal beide Skripte stehen und um es verständlicher zu machen ebenfalls ein Video. Ich würde mich sehr sehr sehr über Hilfe freuen 
OutOfWIndow-Skript:
Game-Skript:
Video:
MFG DreamGamer
Code:
MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, UnityEngine.Vector3 pos, UnityEngine.Quaternion rot) <0x43a52660 + 0x00062> in <c8d2deaeeb3a4471b3e224c2a136823a>:0
UnityEngine.Object.Instantiate (UnityEngine.Object original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:211)
UnityEngine.Object.Instantiate[T] (T original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:285)
Game.Update () (at Assets/Scripts/Game.cs:77)
OutOfWIndow-Skript:
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class deleteIfOutOfWindow : MonoBehaviour
{
private Vector2 screenBounds;
// Start is called before the first frame update
void Start()
{
screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height));
}
void OnBecameInvisible()
{
if (this.gameObject != null)
{
DestroyImmediate(this.gameObject);
}
}
}
Game-Skript:
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Game : MonoBehaviour
{
public GameObject melone;
public float spawnRate = 2f;
float nextSpawn = 0.0f;
Vector2 spawnPoint;
public Transform gamePanel;
Vector3 touchPosWorld;
private Vector2 screenBounds;
// Use this for initialization
void Start()
{
screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height));
}
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
Debug.Log("Began");
Vector2 worldPoint = Camera.main.ScreenToWorldPoint(touch.position);
RaycastHit2D hit = Physics2D.Raycast(worldPoint, Vector2.zero);
if (hit.collider != null)
{
Debug.Log(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.tag == "melons")
{
GameObject.Destroy(hit.collider.gameObject);
}
}
}
if (Time.time > nextSpawn)
{
nextSpawn = Time.time + spawnRate;
spawnPoint = new Vector2(Random.Range(-screenBounds.x, screenBounds.x), screenBounds.y);
GameObject meloneObject = Instantiate(melone, spawnPoint, Quaternion.identity);
meloneObject.transform.SetParent(gamePanel.transform, true);
meloneObject.layer = 0;
meloneObject.name = "rain";
}
}
}
Video:
MFG DreamGamer