유 니 티 전환 장면 에서 물체 문 제 를 소각 하지 않 는 해결
이 방법 은 우리 로 하여 금 장면 전환 시 장면 을 소각 하지 않 게 할 수 있다.그러나 만약 당신 이 다시 이 장면 으로 돌아간다 면(물 체 를 소각 할 수 없 는 장면 을 만 들 때)이 물체 두 개가 있 는 것 을 발견 할 수 있 을 것 이다.
이 문 제 는 비교적 간단 한 해결 방법 이 있다.
물체 의 Awake()또는 Star()방법 에 이 코드 를 추가 합 니 다.자신 과 같은 이름 을 찾 았 지만 자신의 물체 가 아니라면 자신 을 없 애 버 리 면 이 문 제 를 해결 할 수 있다.다른 곳 은 몰라 도 내 프로젝트 는 쓸 수 있어.
if (GameObject.Find("Players").gameObject != this.gameObject)
Destroy(this.gameObject);
보충:유 니 티 로 딩 장면,타이머,로 딩 시 물 체 를 소각 하지 않 습 니 다.비동기 로 필드 를 불 러 옵 니 다.SceneManager.LoadSceneAsync(SceneName);UnityEngine.CeneManagement 를 사용 하여 참조 해 야 합 니 다.네 임 스페이스,
application.LoadLevel 이 방법 은 더 이상 적용 되 지 않 습 니 다.
협동 프로그램 으로 간단 한 타 이 머 를 만 들 수 있 습 니 다.코드 참조;
DontDestroyOnLoad (this.gameObject);방법 은 장면 을 불 러 올 때 지정 한 물 체 를 소각 하지 않 을 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Base : MonoBehaviour {
public virtual void ScenesLoad(string SceneName,int AfterSomeMinutesToLoad)
{
StartCoroutine (Calculagraph(SceneName,AfterSomeMinutesToLoad));
}
IEnumerator Calculagraph(string SceneName,int AfterSomeMinutesToLoad)
{
yield return new WaitForSeconds (AfterSomeMinutesToLoad*60);
DontDestroyOnLoad (this.gameObject);
SceneManager.LoadSceneAsync(SceneName);
}
}
보충:Unity 팁―게임 오 브 젝 트 폐기 지연GameObject,Component,asset 를 일정 시간 지연 시 키 기 를 원할 때 아래 함 수 를 이용 하여 실현 할 수 있 습 니 다.
스스로 시간 지연 작업 을 실현 할 필요 가 없다.
Destroy(Object obj, float t = 0.0F);
두 번 째 매개 변수 단 위 는 초 이 고 물 체 는 t 초 후에 소각 된다.
using UnityEngine;
public class ScriptExample : MonoBehaviour
{
void DestroyGameObject()
{
Destroy(gameObject);
}
void DestroyScriptInstance()
{
// gameobject
Destroy(this);
}
void DestroyComponent()
{
// gameobject rigidbody
Destroy(GetComponent<Rigidbody>());
}
void DestroyObjectDelayed()
{
// 5 gameobject
Destroy(gameObject, 5);
}
// Ctr , gameobject boxcollider
void Update()
{
if (Input.GetButton("Fire1") && GetComponent<BoxCollider>())
{
Destroy(GetComponent<BoxCollider>());
}
}
}
편집기 확장 개발 을 할 때 실행 되 지 않 을 때 환경 은 Object.Distroy Immediate()만 사용 할 수 있 습 니 다.이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity 최적화1. 프레임마다 처리하는 것을 최대한 피한다. 예를 들면: 5프레임당 한 번 처리로 변경할 수 있습니다. 2. 정시 반복 처리는 InvokeRepeating 함수로 이루어집니다. 예를 들어 0.5초 동안 시작한 후 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.