마녀의 방 프로젝트_트러블슈팅

2025. 10. 28. 12:55개발

 

 

들어가며)

 

처음부터 끝까지 하나하나 내 손으로 기획하고 구현한 첫 프로젝트이기 때문에 

이 게임에 애정이 정말 많이 들어갔다. 

처음부터 공포느낌으로 할 생각은 없었다만,

구현 과정에서 스토리를 제작하며 공포느낌이 물씬 풍기는 게임이 되었다.

오브젝트들에 의미가 들어가야하다보니 마음에 드는 이미지들을

찾거나 제작하는데 오랜 시간이 걸렸다.  

 

또한 배경음악들도 게임톤에 잘 어울리는 음악이 들어가야하기 때문에 많이 고심하며 골랐다. 

유저에게 교훈을 주는 게임을 만들어보고 싶었는데

아직 아마추어 개발자라 구현은 조금 어설플지 몰라도,

내가 말하고자 하는 것들이 플레이에 잘 녹아들었으면 좋겠다. 

 

 

 

https://write24451.tistory.com/47

 

 

 


 

트러블슈팅

 

 

유니티 창에 스코어들이 안들어가는 현상

 

 

미니게임 스코어 설정 단계. 원래 이 자리에 스코어들을 넣었어야하는데 수정 전엔 안들어가졌다.
문제는 이 코드였다. 텍스트매시를 사용하고 있기 때문에 코드도 Text가 아니라 TextMeshProUGUI여야했던 것

 

수정하니 잘 들어갔다.

 

 

 

 

 

 

 


 

 

미니게임에서 ui 폰트들이 자꾸 깨지는 현상

 

 

방법 1. 한글지원이 되는 폰트로 변경을 한다.

방법 2. Atlas height,width를 4096,4096으로 설정하시고 새로 폰트 구워보기

 

이렇게 두 가지 해결책이 있었다.

 

Altas height와 width를 다시 설정하고 밑 링크대로 차근차근 해결해보니 되었다.

 

질문방 천사들과 마음씨 따뜻한 7조 조원분들이 도와주셨다.

모두들 감사해요!

 

 

https://blockdmask.tistory.com/590

 

[유니티] 텍스트 메시 프로 한글이 네모로 나올때 (Text Mesh Pro 한글 세팅)

안녕하세요. BlockDMask입니다. 유니티 최신 LTS 버전인 2021.3.X 버전으로 작업을 하던중 디폴트 text 가 UGUI 텍스트가 아닌 Text Mesh Pro 로 변경되어있는걸 알게 되었습니다. 그래서 Text Mesh Pro 로 한글을

blockdmask.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

씬뷰에서는 오브젝트들이 보이는데 게임뷰에서는 보이지 않는 현상

 

메인카메라가 문제인가.. 싶어서 계속 메인카메라 설정을 만지작 거렸는데 생각보다 해결법은 간단했다. 

메인카메라의 위치와 유저들이 보는 화면에서의 위치가 다르기 때문에 발생한 문제는 맞았지만, 

이 문제는 초보자들에게 자주 발생하는 실수이기 때문에 

단축키만 외워두면 된다! 

 

해결단축키 : 커맨드 + shift+F 

 

 

 

 

 

 

 


 

미니게임의 BgLooper -배경화면이 무한복사가 되질 않는 현상

 

 

이것 때문에 정말 정말 고생했는데, 

강의 코드에서 조금만 응용하면 해결될 문제였다. 

여전히 클래스와 매서드, 함수개념 너무 어렵고 안잡혀있다. 

도대체 언제 잡히는 개념이지..?

 

 

사실 강의 코드 응용도 잘 못하겠고, 아직까지도 너무 어렵다...ㅜㅜ

과제 끝나면 이놈들만 때려야겠다.....이렇게 코드들에 질질 끌려다닐 순 없어.............

 

 

 

펼치면 강의코드 

더보기

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

public class BgLooper : MonoBehaviour
{
    public int numBgCount = 5;
    
    public int obstacleCount = 0;
    public Vector3 obstacleLastPosition  = Vector3.zero;
    
    void Start()
    {
        Obstacle[] obstacles = GameObject.FindObjectsOfType<Obstacle>();
        obstacleLastPosition = obstacles[0].transform.position;
        obstacleCount = obstacles.Length;
        
        for(int i = 0; i < obstacleCount; i++)
        {
            obstacleLastPosition = obstacles[i].SetRandomPlace(obstacleLastPosition, obstacleCount);
        }
    }

    public void OnTriggerEnter2D(Collider2D collision)
    {
        Debug.Log("Triggered: " + collision.name);
        
        if (collision.CompareTag("BackGround"))
        {
            float widthOfBgObject = ((BoxCollider2D)collision).size.x;
            Vector3 pos = collision.transform.position;

            pos.x += widthOfBgObject * numBgCount;
            collision.transform.position = pos;
            return;
        }
        
        Obstacle obstacle = collision.GetComponent<Obstacle>();
        if (obstacle)
        {
            obstacleLastPosition = obstacle.SetRandomPlace(obstacleLastPosition, obstacleCount);
        }
    }
}

 

수정 후 코드

 

수정 전 문제) CompareTag의 대소문자를 다르게 썼었다. 

     백그라운드에 달려있는 태그의 대소문자와 스펠링을 유의하자. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

마치며

 

결과물은 생각보다 예쁘게 뽑혔지만, 아직 코드나 유니티에 대한 이해가 부족하단걸 새삼 많이 느낀다.

코드의 개념에 대한 공부를 많이 많이 해야겠다. 

때려박기 식으로는 더이상 안돼! 

 

 

그치만 결과물이 정말 잘나와서 매우 뿌듯하다. 

혼자 만들어본 첫 프로젝트인데, 마개조까지 구현성공하다니! 

심지어 막판에 엄청 오ㅏ랄ㄹ랄라 했는데 로드씬매니저 별다른 오류 없이 잘 구동되어서 매우 감사하고 뿌듯하다.

제출날 많은 오류 안일으킴에 감사.

고생한 나자신에게 박수 열번. 

튜터님들에게도 박수박수~~~~~~~~~~~~~~

너어무 고생했다 내자신........................ㅜㅜ아직 개념이 안잡힌게 아쉽지만 그럼에도 왕뿌듯하긴해~