김김김의 게임개발
  • 유니티 게임개발 - 게임 개발 심화 팀 과제 #2
    2023년 10월 16일 21시 04분 31초에 업로드 된 글입니다.
    작성자: noun06

    스킨 선택 시스템을 간단하게 구현하였다. Static 변수 skinToLoad를 선언하여 프리팹을 플레이어의 하위에 instantiate하는 방식으로 스킨을 불러온다. 기존의 캐릭터 컨트롤러의 변수에 넣어줘야할 것들을 위해 컴포넌트를 외부에서 불러오는 방식을 선택했다. EquipSkin메서드를 통해 스킨 선택 씬에서 특정 스킨을 선택해서 내보낸다.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class SkinLoadController : MonoBehaviour
    {
        public static GameObject skinToLoad;
        [SerializeField] private GameObject defaultSkin;
    
        private void Awake()
        {
            if (skinToLoad != null)
            {
                GameObject skinClone = Instantiate(skinToLoad, transform);
                Destroy(defaultSkin);
                CharacterController characterController = FindObjectOfType<CharacterController>();
    
                if (characterController != null)
                {
                    Animator skinAnimator = skinClone.GetComponent<Animator>();
                    characterController.animator = skinAnimator;
                    characterController.characterBody = skinClone.transform;
                }
            }
        }
    }
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class SkinPanel : MonoBehaviour
    {
        public GameObject skinToEquip;
    
        public void EquipSkin()
        {
            SkinLoadController.skinToLoad = skinToEquip;
        }
    }

    댓글