안녕하세요

프로그램 과정에서 막혔던 문제들에 대한 해결책 정리


페이지 목록

2026년 1월 2일 금요일

[유니티][Unity][C#] [Range(0f,1f)] public float probaility 뜻

 [Range(0f,1f)] 

public float probability; 

 

 이렇게 적으면 probability값은 0f-1f 사이로 제한이 되게 된다.

 Unity Inspector에서 probability 변수를 슬라이더로 보여주고 값이 0.0 - 1.0 사이로 제한이 된다.

 게임 내 코드에서는 따로 값 제한을 해주지 않아도 Inspector에서 입력 범위가 자동으로 제한됨


단, Inspector에서만 0.0 - 1.0 사이 값을 정하는 거지 코드에서는 무슨 값이든 넣을 수 있다.


챗지피티를 참조하여 작성하였습니다.

2026년 1월 1일 목요일

[유니티][Unity] ScriptableObject란?

  씬에 붙지 않는 데이터 전용 객체 이다.


 인스펙터에서 값이 수정가능한 데이터 파일이다.

 여러 오브젝트가 같은 데이터를 공유하게 된다.


 씬과 생명주기에서 독립 된 에디터에서 관리 가능한 데이터 덩어리


 카드 기본 정보, 아이템 스텟, 스킬 쿨타임 등을 저장해 놓는다.


 말하자면 스텟을 미리 저장해 놓는 설계도의 역할을 한다고 보면된다.

 

 런타임 상태 관리, 플레이어 마다 다른 값 유지 등은 할 수 없다. 


 에셋과 붙어있는 데이터이기 때문에 에셋 데이터를 바꾸는 게 되기 때문이다.


챗지피티의 도움을 받아 작성하였습니다.


 

[유니티][Unity] TextArea

 유니티에서 TextArea를 적으면 Inspector 창에서 텍스트 입력칸이 늘어나는 효과를 준다. 여러줄을 작성해야 되는 스킬 설명과 같은 걸 적을 때 유용하게 쓸 수 있다.


제미나이의 도움을 받아 작성하였습니다.

[유니티][Unity] Serializable 이란

 1. 유니티 인스펙터 노출 : serializable을 쓰면 유니티 inspector 창에 노출이 되어서 inspector 창에서 데이터를 작성해서 쓸 수 있게 된다.

2. 데이터 저장 및 로드: [Serializable]이 붙어 있으면 해당 객체를 JSON이나 바이너리 파일로 변환하여 저장을 해서 유저가 게임을 끄더라도 현재 스탯이나 보유한 카드를 저장할 수 있다.


제미나이의 도움을 받아 작성하였습니다.

2025년 12월 25일 목요일

[유니티][Unity][C#] as를 이용한 형변환

 IHpBarView hpBar = aView;


BossView bossView = hpBar as BossView;


if(bossView != null)
{ //bossView function 호출

   bossView.Die();
}

else

{
       Debug.LogWarning("이 뷰는 BossView가 아님");

}


이렇게 as 를 통해서 IHpBarView를 상속받는 BossView 형으로 변환 시킬 수 있다.


제미나이를 참조하여 만들었습니다.

2025년 12월 17일 수요일

LMAdSize.h 를 찾을 수 없다는 에러가 발생했을 때 해결 방법

유니티에서 iOS 빌드를 했을 때 .xcodeproj 로 열면 발생하는 이슈이다.

xcodeproj는 내부적인 코드만을 사용하기 때문에 외부 요소들을 배제하여 빌드하기 때문에 외부에 대한 코드를 가져오지 못해서 발생한다.

 그래서 .xcworkspace를 열어야 한다.


 그런데 보면 xcworkspace가 보이지 않을 수 있다. 이 때 해당 프로젝트에 Podfile 이 만들어졌는지 확인 해보자. 이게 없다면 나도 해결방법을 알지못하는데 이게 있다면 문제는 해결할 수 있다

podfile은 "애드몹이랑 광고를 돌리려면 A,B,C라는 파일들이 필요해" 라는 명단이 적혀 있다. 그런데 이걸 실제로 설치하려면 pod install을 돌려야 한다. 이걸 자동으로 돌리게 되있는데 iOS 환경이 복잡하여 이걸 실행 못하는 상황이 발생한다. 이럴 때 수동으로 pod install을 입력해서 수동 설치를 해줘야 한다.


 이렇게 pod install을 하면 xcodeproj에 이런 외부 부품들을 결합하여 xcworkspace를 만들어 주게 된다. 

 

결론: xcworkspace를 열어서 빌드하면 된다. 그런데 이게 없다면 podfile이 있는지 확인해 보고 있다면 해당 폴더에서 pod install을 하여 xcworkspace를 만들어 실행하면 된다.


 제미나이의 도움을 받아 작성하였습니다.

2025년 12월 15일 월요일

other.TryGetComponent(out var damageableTarget) 이란

충돌한 다른 게임 오브젝트에 특정 컴포넌트가 있는지 확인하고, 있다면 해당 컴포넌트의 참조를 안전하게 가져오는 역할을 함


 TryGetComponent<T>(out T component)

 <T> 에 대한 컴포넌트를 찾으라는 것 여기서 이번에는 T가 IDamagable임

Try를 붙여 시도한다는 것이다. 찾으면 true, 못찾으면 false를 반환하고 에러를 발생시키지 않음


out T Component(out var damageableTarget)

out 은 찾은 컴포넌트의 참조를 이 변수에 담아서 반환하라는 의미임

var damageableTarget : 컴포넌트를 찾으면 참조가 저장될 새 변수를 선언하고 이름이 damageableTarget이라는 뜻


즉, IDamagable을 구현한 컴포넌트가 other에 있는지 확인하고 있으면 damageableTarget 변수에 그 컴포넌트 정보를 담아주고 찾았는지 못 찾았는지 알려달라는 것이다.


제미나이의 도움을 받아 작성하였습니다.