[UNITY] 캐릭터 동시에 움직이는 이슈

힐링힐링·2024년 6월 28일
0

UNITY

목록 보기
3/35

1.현상

Terrain Scnece에서 캐릭터 객체를 추가 생성후 Test를 할경우
계속 기존에 Spawn된 캐릭터에 카메라가 포커싱 되는 현상이 있었음
즉 캐릭터 1개 추가시 2개의 캐릭터가 동시에 움직이는것임

2. 원인

PlayerSpawn 코드에서
Instantiate(Characters[SaveScript.pchar], spawnPoint.position, spawnPoint.rotation);
라인 초기값에 SaveScript.pchar는 영구적으로 유지 되는 상태
왜냐하면 SaveSript에서 pchar와 pname 을 DontDestroyOnLoad먹여버림

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

public class PlayerSpawn : MonoBehaviour
{
    public GameObject[] Characters;
    public Transform spawnPoint;
    // Start is called before the first frame update
    void Start()
    {
        // Test를 위해Terrain1 Sence에서 Game Scence Start를 하려면 주석처리 필요
        Instantiate(Characters[SaveScript.pchar], spawnPoint.position, spawnPoint.rotation);
        
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SaveScript : MonoBehaviour
{
    public static int pchar = 0;
    public static string pname = "player";
    
    // Start is called before the first frame update
    void Start()
    {
        DontDestroyOnLoad(this);
    }

    // // Update is called once per frame
    // void Update()
    // {
    //     Debug.Log("Name= " + pname);
    // }
    
}

3. 해결방법

Test를 위한 코드이니
Instantiate(Characters[SaveScript.pchar], spawnPoint.position, spawnPoint.rotation); 부분 자체를 주석 처리해놓음

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

public class PlayerSpawn : MonoBehaviour
{
    public GameObject[] Characters;
    public Transform spawnPoint;
    // Start is called before the first frame update
    void Start()
    {
        // Test를 위해Terrain1 Sence에서 Game Scence Start를 하려면 주석처리 필요
        // Instantiate(Characters[SaveScript.pchar], spawnPoint.position, spawnPoint.rotation);
        
    }
}
profile
재밌겠네 ? 해봐야지 ~

0개의 댓글