Продиан спросил, пробовал ли я сам gameobject.active, и хочу поблагодарить вас за совет.Работает отлично!Я изменил тип ссылки на gameobject, изменил его и сделал необходимое, и теперь он работает как шарм!
Вот новый код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PickUpReCharge : MonoBehaviour
{
public Animator anim;
public Animator animc;
public Animator anime;
public GameObject neon;
public GameObject chargesprite;
public AudioSource recharge;
public BoxCollider2D collision;
public GameObject blackout;
public AudioSource ambient;
public AudioSource music;
void Start()
{
anime.Play("Pickup", 0, 1f);
}
void Update()
{
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
neon.GetComponent<PlayerMovement>().enabled = true;
chargesprite.GetComponent<SpriteRenderer>().enabled = false;
collision.GetComponent<BoxCollider2D>().enabled = false;
anim.SetBool("IsDead", false);
anim.Rebind();
animc.Rebind();
anime.Rebind();
recharge.Play();
Destroy(gameObject, 3.0f);
if (blackout.gameObject.activeSelf)
{
ambient.Play();
music.Play();
}
blackout.gameObject.SetActive(false);
}
}
}
РЕДАКТИРОВАТЬ: еще одна вещь, на которую следует обратить внимание!Расположение оператора if важно.Это должно было быть перед кодом, который делает спрайт ложным.Это означает, что предыдущий код сработал бы, если бы это было сделано, но код gameobject намного лучше для меня, потому что слой затемнения - это тот, который мне нужно постоянно выключать.
По сути, мой старыйкод работает!Просто переместите оператор if перед «getcomponent ...... enabled = false», потому что скрипт читается по порядку.