<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4269806382658593631</id><updated>2026-09-26T23:36:06.568+09:00</updated><category term="unity"/><category term="안드로이드"/><category term="유니티"/><category term="JAVA"/><category term="MFC"/><category term="Servlet"/><category term="UI"/><category term="copilot"/><category term="MySQL"/><category term="코파일럿"/><category term="DB"/><category term="C#"/><category term="jQuery"/><category term="에러"/><category term="Swift"/><category term="libCurl"/><category term="PHP"/><category term="BITMAP"/><category term="AUDIO"/><category term="ECLIPSE"/><category term="HTML"/><category term="Network"/><category term="VS2010"/><category term="javaScript"/><category term="Direct X"/><category term="GUI"/><category term="IOS"/><category term="JSON"/><category term="Select"/><category term="Windows"/><category term="단어장"/><category term="CTime"/><category term="C언어"/><category term="TextMeshPro"/><category term="=&gt;"/><category term="Apache"/><category term="CRecordSet"/><category term="Excel"/><category term="Foreign Key"/><category term="Gemini"/><category term="Get"/><category term="HpBar"/><category term="Kinematic"/><category term="MEDIASTORE"/><category term="MSSql"/><category term="MVC"/><category term="MVP"/><category term="React Native"/><category term="React Native Tutorial"/><category term="ScriptableObject"/><category term="Text"/><category term="UTF-8"/><category term="XML"/><category term="animator"/><category term="array"/><category term="button"/><category term="chatGPT"/><category term="checkbox"/><category term="decode"/><category term="encode"/><category term="homebrew"/><category term="iPhone"/><category term="list"/><category term="listCtrl"/><category term="table"/><category term="trigger"/><category term="변신인간"/><category term="아이폰"/><category term="오드로이드"/><category term="외래키"/><category term="제미니"/><category term="컴퓨터"/><category term="#define"/><category term="(... as ..)?.Function()"/><category term="1f)"/><category term="2kinematic"/><category term="2kinematicrigidbody"/><category term="2kinematicrigidbodyCollision"/><category term="2kinematicrigidbodyTrigger"/><category term="=="/><category term="ACTIVITY"/><category term="AI검색을 통한 코딩질문"/><category term="AI검색이 코딩하는 법도 알려준다"/><category term="ANSI"/><category term="Action"/><category term="Add Animation Event를 활용한 데미지 주기 조절방식"/><category term="Alert"/><category term="AllTextMeshProchanged"/><category term="Anchor"/><category term="Anchor 프리셋이 좌우 Stretch"/><category term="Android"/><category term="Animation을 활용하여 데미지 주는 방법"/><category term="ArrayList"/><category term="Auto Increment"/><category term="Awake vs Start"/><category term="BOOL"/><category term="BOOLEAN"/><category term="C# as"/><category term="C# as를 이용한 형변환"/><category term="C# namespace"/><category term="CSpanTime"/><category term="CString"/><category term="Class"/><category term="Class Json"/><category term="Color값 공유"/><category term="ComboBox"/><category term="Const"/><category term="ContentView"/><category term="Count"/><category term="DOTween"/><category term="Debug"/><category term="Dialog"/><category term="Double"/><category term="Dynamic"/><category term="EUC-KR"/><category term="Encoding"/><category term="Equal"/><category term="FindFirstObjectByType null"/><category term="FindFirstObjectByType null 값 반환하는 이유"/><category term="FindGameObjectByName"/><category term="FindGameobjectUsingName"/><category term="FindObjectOfType"/><category term="FindObjectsOfType"/><category term="First"/><category term="FirstOrDefault"/><category term="Float"/><category term="Func"/><category term="GIMP"/><category term="Gerrit"/><category term="GetComponent"/><category term="GetComponent범위"/><category term="God"/><category term="Google"/><category term="GoogleGod"/><category term="Google신"/><category term="Gravity0"/><category term="Gravity0vsKinematic"/><category term="GravityZero"/><category term="HP"/><category term="HP bar 크기가 폰 화면에 따라 바뀌는 방법"/><category term="HP 코드 재사용"/><category term="HPBarAnimation"/><category term="HTTP"/><category term="HashMap"/><category term="HpColorConfig"/><category term="If ... is...."/><category term="Image"/><category term="Image Type is Missing"/><category term="Image image1 = image2가 동작하지 않는 이유"/><category term="ImageType"/><category term="ImageTypeisMissing"/><category term="Instantiate"/><category term="Instantiate 후 화면에 나오지 않음"/><category term="Instantiate(uiPrefab)"/><category term="Invalid update: invalid number of rows in section 0"/><category term="Invariant Violation: requireNativeComponent: &quot;RNSScreen&quot; was not found in the UIManager"/><category term="Invoke()"/><category term="JDK"/><category term="JRE"/><category term="JS"/><category term="Join"/><category term="KnowHow"/><category term="LMAdSize.h"/><category term="LMAdSize.h 를 찾을 수 없는 에러"/><category term="LMAdSize.h 에러 고치는법"/><category term="Left"/><category term="ListTypeArgumentsError"/><category term="ListView"/><category term="MVC Model"/><category term="MVC 모델 관리"/><category term="MVC 모델 장점"/><category term="MVC란"/><category term="MVP 애니메이션"/><category term="MVP가 유니티에 좋은 이유"/><category term="MVP란"/><category term="MVP로 애니메이션 사용하기"/><category term="Mac javascript 에디터"/><category term="Mac js 에디터"/><category term="Mac에서 js 파일 생성 방법"/><category term="MessageBox"/><category term="MoveNext"/><category term="MovePosition사용방법"/><category term="MovePostiion"/><category term="Multiple Podfiles were found"/><category term="Native Base"/><category term="Notch"/><category term="NullException"/><category term="ODBC"/><category term="OnTriggerEnter"/><category term="Picker has been removed from React Native"/><category term="Pivot"/><category term="Position"/><category term="Post"/><category term="Pretendard"/><category term="Pretendard-Regular"/><category term="REG-RESP"/><category term="Range(0f"/><category term="React"/><category term="React Native Router"/><category term="React Native UI Components"/><category term="React Native 간단한 예제"/><category term="React Native 예제"/><category term="React native elements"/><category term="React vs React Native"/><category term="React-Native"/><category term="React-Native Props"/><category term="React-Native State"/><category term="React-Native 설치하기"/><category term="React-Native 환경설정"/><category term="Recommend Copilot to search unity question"/><category term="RequireComponent"/><category term="Restriced Assset"/><category term="Reverse find"/><category term="Right"/><category term="Rigidbody"/><category term="Rigidbody.position"/><category term="Router 실습 중 Warning"/><category term="Serializable"/><category term="Set"/><category term="Simulator"/><category term="Stretch에서 동작하는 HP 감소 에니메이션"/><category term="TINYINT"/><category term="TMP_Text"/><category term="Table View"/><category term="TextArea"/><category term="TextMeshProOutLine"/><category term="TextMeshproUGUI"/><category term="TextMeshproUGUI와 TMP_Text 비교"/><category term="Time"/><category term="Tomcat"/><category term="Tricky한상황"/><category term="TryGetComponent"/><category term="UI 와 공용 컨트롤러간의 관계"/><category term="UnableToResolveError: Unable to resolve module AccessibilityInfo"/><category term="Unity 2D"/><category term="Unity Enemy and Main Character HP"/><category term="Unity Enemy and my HP"/><category term="Unity HP Bar"/><category term="Unity HP Bar UI"/><category term="Unity Restricted Asset"/><category term="Unity free Asset can be used for commercial use"/><category term="Unity2D 보스의 주인공 기준 범위기술"/><category term="UnityDouble"/><category term="UnityError"/><category term="UnityFloat"/><category term="UnityHP"/><category term="UnityList"/><category term="UnityText"/><category term="UnityTextMeshPro"/><category term="UnityTextisGone"/><category term="VC2010"/><category term="ViewController"/><category term="ViewProp Types has been removed"/><category term="ViewPropTypes has been removed from React Native"/><category term="Your Ruby version is 2.6.10"/><category term="[RequireComponent()]"/><category term="[RequireComponent(typeof(Collider))]"/><category term="[Serializable]"/><category term="admob"/><category term="angularjs"/><category term="animator.SetTrigger"/><category term="as 형 변환"/><category term="attribute"/><category term="audit table"/><category term="awake 와 start 호출순서"/><category term="awake와 start 순서"/><category term="bitbucket"/><category term="brew"/><category term="brew(Homebrew) 설치"/><category term="broadcast"/><category term="bundle install"/><category term="bundle install 에서 could not locate Gemfile 에러"/><category term="but your Gemfile specified 2.7.5"/><category term="button click"/><category term="change"/><category term="change ... closed"/><category term="change closed"/><category term="change port"/><category term="class를 Json으로 변경하는 방법"/><category term="cocoapods"/><category term="cocoapods gem"/><category term="cocoapods homebrew"/><category term="collision"/><category term="controller"/><category term="coroutine"/><category term="could not locate Gemfile"/><category term="cross join"/><category term="curHP"/><category term="database"/><category term="db browser for sqlite"/><category term="db for iphone apps"/><category term="db에서 변경된 값 저장방법"/><category term="dcctrldrv.sys"/><category term="dcctrldrv.sys 삭제"/><category term="decodeURI"/><category term="delegate"/><category term="delete"/><category term="deprecated"/><category term="display"/><category term="document"/><category term="editor"/><category term="emit"/><category term="encodeURI"/><category term="error installing hermes-engine"/><category term="event"/><category term="factory"/><category term="floatingJoystick"/><category term="floatingJoystick 값 가져와서 케릭터 움직이기"/><category term="floatingJoystick 크기 조절"/><category term="floatingJoystick과 케릭터 움직임 연동"/><category term="for each"/><category term="for each in"/><category term="foreach"/><category term="from to"/><category term="gem"/><category term="gem vs homebrew"/><category term="getTime"/><category term="getprivateset"/><category term="github"/><category term="gitlab"/><category term="how to find restricted asset in unity asset store"/><category term="iOS에서 Apple Developer Program을 사야지만 앱을 테스트할 수 있나"/><category term="in"/><category term="in source file"/><category term="insert"/><category term="insert update"/><category term="invoke"/><category term="ios Simulator"/><category term="ios simulator cmd D 동작안함"/><category term="ios 시뮬레이터"/><category term="ios 시뮬레이터 cmd D 동작 불가"/><category term="ios 시뮬레이터 디버그 버튼 동작불가"/><category term="ipone app db"/><category term="lcoal db"/><category term="localstorage"/><category term="mac 에서 ctrl+z로 되돌리기에서 다시 되돌리기"/><category term="macOS"/><category term="macbook"/><category term="mac에 cocoapods 설정"/><category term="mac에서 javascript 파일 생성 방법"/><category term="mac을 위한 js 에디터"/><category term="message"/><category term="monobehaviour없는 클래스를 이용한 UI 관리"/><category term="monobehaviour없는 클래스에서 ui 연동하는 방법"/><category term="move"/><category term="nText"/><category term="namespace"/><category term="navigation"/><category term="navigationButton"/><category term="navigationLink"/><category term="node.js 설치파일"/><category term="not a developer tool or in PATH"/><category term="npm i 에서 i의 의미는?"/><category term="npm install"/><category term="npm install vulnerabilities"/><category term="null오류"/><category term="object reference not set to an instance of an object"/><category term="on"/><category term="option"/><category term="oss10013"/><category term="out"/><category term="out var damageableTarget"/><category term="out vs ref"/><category term="performsegue"/><category term="phone"/><category term="placeholder"/><category term="prepare"/><category term="prevHP"/><category term="privateset"/><category term="property"/><category term="react-native link"/><category term="react-native 사용 시 아이폰 notch 영역에 ui를 그리지 않게 하는 방법"/><category term="readonly"/><category term="ready"/><category term="ref"/><category term="ref out 공톰점"/><category term="ref out 차이점"/><category term="ref vs out"/><category term="rncwebview was not found in the uimanager ios"/><category term="search"/><category term="segue"/><category term="service"/><category term="setloat"/><category term="sharing data"/><category term="sharing data between controllers"/><category term="sqlite client"/><category term="sqlite free client"/><category term="startcoroutine"/><category term="substr"/><category term="swift error"/><category term="swift 개발"/><category term="swiftui"/><category term="tableview"/><category term="this"/><category term="toggle"/><category term="toggle button"/><category term="typeof(Collider)"/><category term="unable to dequeue a cell with identifier reuseIdentifier"/><category term="unable to find utility &quot;simctl&quot;"/><category term="unable to open configuration settings file"/><category term="unexpected String"/><category term="unity ?"/><category term="unity 물음표"/><category term="unity 형 변환"/><category term="unterminated string constant"/><category term="vcruntime140.dll"/><category term="view"/><category term="waitforseconds"/><category term="windows에서 iPhone에 앱 빌드하기"/><category term="가이드"/><category term="가젯"/><category term="개발"/><category term="개발 시 구글 애드몹 계정 만들어야 하나"/><category term="개발 환경"/><category term="갤럭시s"/><category term="게임"/><category term="게임 Windows 에서 IOS로 변경해서 개발하기"/><category term="구글 애드몹"/><category term="구글 애드몹 계정 활성화 해야 광고 기능 개발 가능한가"/><category term="기능"/><category term="노치"/><category term="누르는 곳에 생성되는 조이스틱"/><category term="다른스크립트사용하기"/><category term="데이터 공유"/><category term="데이터 전달"/><category term="디자인 패턴"/><category term="람다"/><category term="람다 연산자"/><category term="람다=&gt;"/><category term="람다를 이용한 이벤트 추가"/><category term="맥북"/><category term="메모리 무결성 오류 해결"/><category term="메세지"/><category term="메소드에서 수행한 ui 변경이 반영되지 않는 경우"/><category term="무료 에셋 상업적 사용 가능한가"/><category term="무료 이미지 편집 앱"/><category term="무지개색HPBar"/><category term="문자 짤림"/><category term="물음표 역할"/><category term="배경색지우기"/><category term="보스"/><category term="보스가 날린 파이어볼을 플레이어에게 날리기"/><category term="보스가 주인공 기준으로 원형의 범위기 사용"/><category term="보스와 주인공 HP 처리 방법이 같으면 코드를 재사용하는 방법"/><category term="볼과 보스 중 어디에 OnTriggerEnter를 줘야 하나"/><category term="사이트"/><category term="상속과 인터페이스의 차이점"/><category term="소프트웨어 디자인 패턴"/><category term="습관"/><category term="시뮬레이터"/><category term="신"/><category term="아이폰 시간나오는 영역"/><category term="아파치"/><category term="안드로이드 마켓"/><category term="애드몹"/><category term="앱개발"/><category term="앱스토어"/><category term="앱에 애드센스"/><category term="앵커"/><category term="에디터"/><category term="에셋 스토어 상업적 사용 가능한가"/><category term="여러 행 Insert"/><category term="오브젝트에 여러개의 스크립트 사용"/><category term="원하는 타이밍으로 데미지 주기"/><category term="윈도우 코드를 맥북에서 받는 방법"/><category term="유니티 ?"/><category term="유니티 개발환경 확인 방법"/><category term="유니티 무료 에셋 상업적 사용 가능한가"/><category term="유니티 물음표"/><category term="유니티 에셋 스토어 제한된 에셋"/><category term="유니티 오브젝트에 여러개 스크립트 사용"/><category term="유니티 제한된 에셋"/><category term="유니티 한글 Font 깨짐"/><category term="유니티 형변환"/><category term="이름으로게임오브젝트찾기"/><category term="이미지편집앱"/><category term="이미지편집앱 GIMP"/><category term="이미지편집앱사용"/><category term="이미지편집앱으로 배경 투명하게하기"/><category term="이벤트 추가"/><category term="이전과 현재값비교"/><category term="인터페이스도 다형성을 사용할 수 있다"/><category term="재부팅"/><category term="적과 주인공 HP Bar 2개일때"/><category term="적과 주인공 HP 관리에 싱글톤을 적용하면 안되는 이유"/><category term="적과 주인공 HP를 같은 controller로 구현하는게 좋은가"/><category term="적과 주인공HP 구현방법"/><category term="적에게 데미지 주기"/><category term="전화"/><category term="제한된 에셋"/><category term="조이스틱"/><category term="챗GPT"/><category term="챗지피티"/><category term="최신버전의 에디터 다운받기"/><category term="컨트롤러"/><category term="컨트롤러 간 데이터 공유"/><category term="코드 재사용"/><category term="코드모듈화"/><category term="코드재사용성"/><category term="코딩질문에 답하는 AI검색"/><category term="코파일럿 사용평가"/><category term="코파일럿답변"/><category term="코파일럿으로 유니티에 대한 질문하기"/><category term="코파일럿이 말하는 적과 주인공 HP 관리 방법"/><category term="코파일럿추천"/><category term="특수문자"/><category term="파이어볼"/><category term="파이어볼 날리기"/><category term="포지션"/><category term="표현식 본문"/><category term="프리팹이 화면에 나오지 않음"/><category term="플레이어"/><category term="플로팅 조이스틱"/><category term="플로팅 조이스틱 크기 조절"/><category term="피벗"/><category term="하나의 오브젝트에 여러개의 스크립트 넣기"/><category term="한글 Font"/><category term="한글 Font 깨짐"/><category term="한글 Font 사용법"/><category term="한글 깨짐"/><category term="한영 자동변환"/><category term="형변환"/><category term="흰색을 투명색으로 바꾸기"/><title type='text'>Developer</title><subtitle type='html'>개발하다가 막힌 곳을 뻥 뚫은 순간에 대한 기록</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>380</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-7133427257214431926</id><published>2026-01-28T17:43:00.000+09:00</published><updated>2026-01-28T17:43:02.951+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="C# namespace"/><category scheme="http://www.blogger.com/atom/ns#" term="namespace"/><title type='text'>[C#] namespace란?</title><content type='html'>&lt;p&gt;1. 네임스페이스란?&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;코드를 정리하는 폴더 개념이다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;token&quot;&gt;BossSlayer&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;Models&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;{&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;    &lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;public&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;PlayerModel&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;BossModel&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;}&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;}&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;token&quot;&gt;BossSlayer&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;Views&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;{&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;public&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;BattleView&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;}&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #5c6370; font-style: italic;&quot;&gt;// 실제 사용 시:&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token&quot;&gt;BossSlayer&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;Models&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token&quot; style=&quot;color: #5c6370; font-style: italic;&quot;&gt;// Models 폴더의 것들을 사용하겠다!&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;PlayerModel&lt;/span&gt; player &lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token constructor-invocation&quot; style=&quot;color: #d19a66;&quot;&gt;PlayerModel&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이런 식으로 사용하게 된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2. 왜 필요한가?&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;namespace가 없으면 동일한 class PlayerModel이 다른 파일에 미리 만들어져 있으면 충돌 나게 된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;이러한 상황을 namespace를 만들어서 BossSlayer.Models.PlayerModel; 로 네임스페이스를 붙여 적으면 어떤 PlayerModel인지 명확하게 할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 네임스페이스 구조의 의미&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #c678dd;&quot;&gt;namespace&lt;/span&gt; BossSlayer&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt;Models&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #5c6370; font-style: italic;&quot;&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;──┬── ──┬───&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #5c6370; font-style: italic;&quot;&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 회사/프로젝트  카테고리&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #5c6370; font-style: italic;&quot;&gt;// 의미:&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #5c6370; font-style: italic;&quot;&gt;// BossSlayer = 프로젝트 이름&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #5c6370; font-style: italic;&quot;&gt;// Models = Model 레이어에 속한다는 표시&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;```&lt;/p&gt;&lt;p&gt;&amp;nbsp;

&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;장점&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;충돌 방지&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;:&lt;/span&gt; 다른 에셋과 이름이 겹쳐도 OK&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;구조 명확&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;:&lt;/span&gt; 코드가 어디에 속하는지 명확&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;IntelliSense 정리&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;:&lt;/span&gt; IDE에서 자동완성이 깔끔하게 분류됨&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;token&quot; style=&quot;color: #d19a66;&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;팀 협업&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #61afef;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #abb2bf;&quot;&gt;:&lt;/span&gt; 누가 봐도 구조 이해 가능&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&quot;Claude(Anthropic AI)와의 대화를 바탕으로 작성했습니다&quot;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/7133427257214431926/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/c-namespace.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7133427257214431926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7133427257214431926'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/c-namespace.html' title='[C#] namespace란?'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-1147838434516620527</id><published>2026-01-03T23:17:00.006+09:00</published><updated>2026-01-04T00:36:16.868+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Pretendard"/><category scheme="http://www.blogger.com/atom/ns#" term="Pretendard-Regular"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티 한글 Font 깨짐"/><category scheme="http://www.blogger.com/atom/ns#" term="한글 Font"/><category scheme="http://www.blogger.com/atom/ns#" term="한글 Font 깨짐"/><category scheme="http://www.blogger.com/atom/ns#" term="한글 Font 사용법"/><title type='text'>[유니티][Unity] 한글 Font 사용방법 (한글 깨짐 방지)</title><content type='html'>&lt;p&gt;&amp;nbsp;한글이 들어가는 .otf 파일을 받는다. 그리고 저작권에 문제가 없는 것을 사용한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;내 경우에는 Pretendard-Regular.otf를 사용하였다.&lt;/p&gt;&lt;p&gt;본 글 작성 시점 기준으로, Pretendard는 SIL Open Font License 1.1을 따르며&lt;br data-end=&quot;839&quot; data-start=&quot;836&quot; /&gt;
해당 라이선스는 상업적 사용을 허용합니다.&lt;br data-end=&quot;867&quot; data-start=&quot;864&quot; /&gt;&lt;strong data-end=&quot;429&quot; data-start=&quot;373&quot;&gt;실제 사용 전에는 반드시 각 폰트의 공식 배포처에 포함된 라이선스 전문을 확인하시기 바랍니다.&lt;/strong&gt;&lt;br data-end=&quot;432&quot; data-start=&quot;429&quot; /&gt;
라이선스 정책은 변경될 수 있으며, 최종 책임은 사용자인 본인에게 있습니다.&lt;/p&gt;&lt;p&gt;해당 라이센스는&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;153&quot; data-start=&quot;110&quot;&gt;🔐 SIL Open Font License (OFL) 1.1 핵심 요약&lt;/h2&gt;&lt;h3 data-end=&quot;167&quot; data-start=&quot;155&quot;&gt;✅ 허용되는 것&lt;/h3&gt;&lt;ul data-end=&quot;251&quot; data-start=&quot;168&quot;&gt;
&lt;li data-end=&quot;199&quot; data-start=&quot;168&quot;&gt;
&lt;p data-end=&quot;199&quot; data-start=&quot;170&quot;&gt;✔ 상업적 사용 (유료 게임, 광고 수익, 인앱결제)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;211&quot; data-start=&quot;200&quot;&gt;
&lt;p data-end=&quot;211&quot; data-start=&quot;202&quot;&gt;✔ 수정해서 사용&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;227&quot; data-start=&quot;212&quot;&gt;
&lt;p data-end=&quot;227&quot; data-start=&quot;214&quot;&gt;✔ 게임에 포함해서 배포&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;251&quot; data-start=&quot;228&quot;&gt;
&lt;p data-end=&quot;251&quot; data-start=&quot;230&quot;&gt;✔ 번들링 (APK/IPA 안에 포함)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p data-end=&quot;283&quot; data-start=&quot;253&quot;&gt;👉 &lt;strong data-end=&quot;283&quot; data-start=&quot;256&quot;&gt;유니티 게임에 폰트 넣는 것 = 완전 OK&lt;/strong&gt;&lt;/p&gt;&lt;hr data-end=&quot;288&quot; data-start=&quot;285&quot; /&gt;&lt;h3 data-end=&quot;310&quot; data-start=&quot;290&quot;&gt;⚠️ 조건 (중요하지만 쉬움)&lt;/h3&gt;&lt;p data-end=&quot;330&quot; data-start=&quot;311&quot;&gt;1️⃣ &lt;strong data-end=&quot;330&quot; data-start=&quot;315&quot;&gt;폰트 단독 판매 금지&lt;/strong&gt;&lt;/p&gt;&lt;ul data-end=&quot;376&quot; data-start=&quot;331&quot;&gt;
&lt;li data-end=&quot;353&quot; data-start=&quot;331&quot;&gt;
&lt;p data-end=&quot;353&quot; data-start=&quot;333&quot;&gt;❌ 폰트 파일만 따로 팔면 안 됨&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;376&quot; data-start=&quot;354&quot;&gt;
&lt;p data-end=&quot;376&quot; data-start=&quot;356&quot;&gt;⭕ 게임 리소스 일부로 포함 → OK&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p data-end=&quot;398&quot; data-start=&quot;378&quot;&gt;2️⃣ &lt;strong data-end=&quot;398&quot; data-start=&quot;382&quot;&gt;수정한 경우 이름 변경&lt;/strong&gt;&lt;/p&gt;&lt;ul data-end=&quot;459&quot; data-start=&quot;399&quot;&gt;
&lt;li data-end=&quot;436&quot; data-start=&quot;399&quot;&gt;
&lt;p data-end=&quot;436&quot; data-start=&quot;401&quot;&gt;폰트를 수정했으면&lt;br data-end=&quot;413&quot; data-start=&quot;410&quot; /&gt;
→ 원래 폰트 이름 그대로 쓰면 안 됨&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;459&quot; data-start=&quot;437&quot;&gt;
&lt;p data-end=&quot;459&quot; data-start=&quot;439&quot;&gt;(수정 안 했으면 신경 안 써도 됨)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p data-end=&quot;479&quot; data-start=&quot;461&quot;&gt;3️⃣ &lt;strong data-end=&quot;479&quot; data-start=&quot;465&quot;&gt;라이선스 문서 포함&lt;/strong&gt;&lt;/p&gt;&lt;ul data-end=&quot;553&quot; data-start=&quot;480&quot;&gt;
&lt;li data-end=&quot;513&quot; data-start=&quot;480&quot;&gt;
&lt;p data-end=&quot;513&quot; data-start=&quot;482&quot;&gt;보통 폰트 다운로드 시 &lt;code data-end=&quot;504&quot; data-start=&quot;495&quot;&gt;OFL.txt&lt;/code&gt; 같이 들어 있음&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;553&quot; data-start=&quot;514&quot;&gt;
&lt;p data-end=&quot;553&quot; data-start=&quot;516&quot;&gt;게임에 &lt;strong data-end=&quot;532&quot; data-start=&quot;520&quot;&gt;같이 포함하거나&lt;/strong&gt;&lt;br data-end=&quot;535&quot; data-start=&quot;532&quot; /&gt;
크레딧에 한 줄 표기하면 충분&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr data-end=&quot;558&quot; data-start=&quot;555&quot; /&gt;&lt;h2 data-end=&quot;593&quot; data-start=&quot;560&quot;&gt;🎮 Unity + 1인 개발 기준으로 현실적인 처리법&lt;/h2&gt;&lt;h3 data-end=&quot;617&quot; data-start=&quot;595&quot;&gt;가장 안전하고 흔한 방법 (추천)&lt;/h3&gt;&lt;ul data-end=&quot;653&quot; data-start=&quot;618&quot;&gt;
&lt;li data-end=&quot;639&quot; data-start=&quot;618&quot;&gt;
&lt;p data-end=&quot;639&quot; data-start=&quot;620&quot;&gt;폰트 파일 그대로 사용 (수정 X)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;640&quot;&gt;
&lt;p data-end=&quot;653&quot; data-start=&quot;642&quot;&gt;크레딧에 한 줄 추가&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;718&quot; data-start=&quot;655&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;Font: Pretendard
License: SIL Open Font License 1.1&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;hr data-end=&quot;754&quot; data-start=&quot;751&quot; /&gt;&lt;h2 data-end=&quot;771&quot; data-start=&quot;756&quot;&gt;❓ 자주 헷갈리는 오해&lt;/h2&gt;&lt;h3 data-end=&quot;798&quot; data-start=&quot;773&quot;&gt;❌ “무료니까 출처 표기 필요 없음?”&lt;/h3&gt;&lt;p data-end=&quot;856&quot; data-start=&quot;799&quot;&gt;→ &lt;strong data-end=&quot;822&quot; data-start=&quot;801&quot;&gt;OFL는 출처 표기 강제는 아님&lt;/strong&gt;&lt;br data-end=&quot;825&quot; data-start=&quot;822&quot; /&gt;
하지만 &lt;strong data-end=&quot;842&quot; data-start=&quot;829&quot;&gt;크레딧 표기 권장&lt;/strong&gt; (실무에선 거의 다 함)&lt;/p&gt;&lt;h3 data-end=&quot;884&quot; data-start=&quot;858&quot;&gt;❌ “유료 게임이면 안 되는 거 아님?”&lt;/h3&gt;&lt;p data-end=&quot;896&quot; data-start=&quot;885&quot;&gt;→ &lt;strong data-end=&quot;896&quot; data-start=&quot;887&quot;&gt;완전 가능&lt;/strong&gt;&lt;/p&gt;&lt;h3 data-end=&quot;923&quot; data-start=&quot;898&quot;&gt;❌ “폰트 에셋스토어에 같이 올리면?”&lt;/h3&gt;&lt;p data-end=&quot;962&quot; data-start=&quot;924&quot;&gt;→ ❌ 폰트 단독 배포 성격이면 위험&lt;br data-end=&quot;947&quot; data-start=&quot;944&quot; /&gt;
→ 게임 빌드에 포함은 OK&lt;/p&gt;&lt;hr data-end=&quot;1110&quot; data-start=&quot;1107&quot; /&gt;&lt;h2 data-end=&quot;1130&quot; data-start=&quot;1112&quot;&gt;🔥 1인 개발자 기준 결론&lt;/h2&gt;&lt;p&gt;































&lt;/p&gt;&lt;ul data-end=&quot;1227&quot; data-start=&quot;1131&quot;&gt;
&lt;li data-end=&quot;1170&quot; data-start=&quot;1131&quot;&gt;
&lt;p data-end=&quot;1170&quot; data-start=&quot;1133&quot;&gt;&lt;strong data-end=&quot;1170&quot; data-start=&quot;1133&quot;&gt;SIL Open Font License 1.1 = 상업 OK&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1209&quot; data-start=&quot;1171&quot;&gt;
&lt;p data-end=&quot;1209&quot; data-start=&quot;1173&quot;&gt;Unity 유료 게임 / 광고 수익 / 인앱결제 &lt;strong data-end=&quot;1209&quot; data-start=&quot;1200&quot;&gt;전부 OK&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1227&quot; data-start=&quot;1210&quot;&gt;
&lt;p data-end=&quot;1227&quot; data-start=&quot;1212&quot;&gt;크레딧에 한 줄만 써주면 끝&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;다운 받은 Font를 Asset/Fonts 에 폴더 채로 넣는다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그 후 사용할려는 Font를 우클릭한 후 Create-&amp;gt; TextMeshPro -&amp;gt; Font Asset을 선택하고&lt;/p&gt;&lt;p&gt;Font Asset 종류 SDF /Bitmap/ Color/ Font Asset Variant 중에서는 SDF를 대부분 선택하면 된다.&lt;/p&gt;&lt;h2 data-end=&quot;198&quot; data-start=&quot;171&quot;&gt;4가지 타입 차이 (Unity TMP 기준)&lt;/h2&gt;&lt;h3 data-end=&quot;231&quot; data-start=&quot;200&quot;&gt;1️⃣ &lt;strong data-end=&quot;226&quot; data-start=&quot;208&quot;&gt;SDF Font Asset&lt;/strong&gt; ✅ 정답&lt;/h3&gt;&lt;p data-end=&quot;257&quot; data-start=&quot;232&quot;&gt;&lt;strong data-end=&quot;257&quot; data-start=&quot;232&quot;&gt;Signed Distance Field&lt;/strong&gt;&lt;/p&gt;&lt;h4 data-end=&quot;266&quot; data-start=&quot;259&quot;&gt;장점&lt;/h4&gt;&lt;ul data-end=&quot;377&quot; data-start=&quot;267&quot;&gt;
&lt;li data-end=&quot;286&quot; data-start=&quot;267&quot;&gt;
&lt;p data-end=&quot;286&quot; data-start=&quot;269&quot;&gt;해상도 바뀌어도 글자 깨짐 없음&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;309&quot; data-start=&quot;287&quot;&gt;
&lt;p data-end=&quot;309&quot; data-start=&quot;289&quot;&gt;모바일 / 태블릿 / PC 전부 대응&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;341&quot; data-start=&quot;310&quot;&gt;
&lt;p data-end=&quot;341&quot; data-start=&quot;312&quot;&gt;Outline / Shadow / Glow 효과 가능&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;356&quot; data-start=&quot;342&quot;&gt;
&lt;p data-end=&quot;356&quot; data-start=&quot;344&quot;&gt;UI 스케일링 자유로움&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;377&quot; data-start=&quot;357&quot;&gt;
&lt;p data-end=&quot;377&quot; data-start=&quot;359&quot;&gt;TextMeshPro의 핵심 기능&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h4 data-end=&quot;386&quot; data-start=&quot;379&quot;&gt;단점&lt;/h4&gt;&lt;ul data-end=&quot;415&quot; data-start=&quot;387&quot;&gt;
&lt;li data-end=&quot;415&quot; data-start=&quot;387&quot;&gt;
&lt;p data-end=&quot;415&quot; data-start=&quot;389&quot;&gt;Bitmap보다 약간 무거움 (체감 거의 없음)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p data-end=&quot;454&quot; data-start=&quot;417&quot;&gt;👉 &lt;strong data-end=&quot;454&quot; data-start=&quot;420&quot;&gt;UI / 카드 설명 / 버튼 / 숫자 전부 여기에 해당&lt;/strong&gt;&lt;/p&gt;&lt;hr data-end=&quot;459&quot; data-start=&quot;456&quot; /&gt;&lt;h3 data-end=&quot;492&quot; data-start=&quot;461&quot;&gt;2️⃣ Bitmap Font Asset ❌ 비추천&lt;/h3&gt;&lt;ul data-end=&quot;528&quot; data-start=&quot;493&quot;&gt;
&lt;li data-end=&quot;500&quot; data-start=&quot;493&quot;&gt;
&lt;p data-end=&quot;500&quot; data-start=&quot;495&quot;&gt;픽셀 고정&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;515&quot; data-start=&quot;501&quot;&gt;
&lt;p data-end=&quot;515&quot; data-start=&quot;503&quot;&gt;크기 키우면 바로 깨짐&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;528&quot; data-start=&quot;516&quot;&gt;
&lt;p data-end=&quot;528&quot; data-start=&quot;518&quot;&gt;해상도 대응 어려움&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p data-end=&quot;557&quot; data-start=&quot;530&quot;&gt;👉 &lt;strong data-end=&quot;557&quot; data-start=&quot;533&quot;&gt;레트로 픽셀 게임 아니면 쓰지 말 것&lt;/strong&gt;&lt;/p&gt;&lt;hr data-end=&quot;562&quot; data-start=&quot;559&quot; /&gt;&lt;h3 data-end=&quot;597&quot; data-start=&quot;564&quot;&gt;3️⃣ Color Font Asset ❌ 거의 안 씀&lt;/h3&gt;&lt;ul data-end=&quot;650&quot; data-start=&quot;598&quot;&gt;
&lt;li data-end=&quot;616&quot; data-start=&quot;598&quot;&gt;
&lt;p data-end=&quot;616&quot; data-start=&quot;600&quot;&gt;컬러 이모지 / 특수 아이콘용&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;634&quot; data-start=&quot;617&quot;&gt;
&lt;p data-end=&quot;634&quot; data-start=&quot;619&quot;&gt;한글 UI에는 쓸 이유 없음&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;650&quot; data-start=&quot;635&quot;&gt;
&lt;p data-end=&quot;650&quot; data-start=&quot;637&quot;&gt;용량 큼, 모바일 비효율&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr data-end=&quot;655&quot; data-start=&quot;652&quot; /&gt;&lt;h3 data-end=&quot;692&quot; data-start=&quot;657&quot;&gt;4️⃣ Font Asset Variant ❌ 초보자 금지&lt;/h3&gt;&lt;ul data-end=&quot;771&quot; data-start=&quot;693&quot;&gt;
&lt;li data-end=&quot;747&quot; data-start=&quot;693&quot;&gt;
&lt;p data-end=&quot;714&quot; data-start=&quot;695&quot;&gt;기존 Font Asset을 기반으로&lt;/p&gt;
&lt;ul data-end=&quot;747&quot; data-start=&quot;717&quot;&gt;
&lt;li data-end=&quot;726&quot; data-start=&quot;717&quot;&gt;
&lt;p data-end=&quot;726&quot; data-start=&quot;719&quot;&gt;Outline&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;737&quot; data-start=&quot;729&quot;&gt;
&lt;p data-end=&quot;737&quot; data-start=&quot;731&quot;&gt;Shadow&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;747&quot; data-start=&quot;740&quot;&gt;
&lt;p data-end=&quot;747&quot; data-start=&quot;742&quot;&gt;Style&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;759&quot; data-start=&quot;748&quot;&gt;
&lt;p data-end=&quot;759&quot; data-start=&quot;750&quot;&gt;관리 난이도 높음&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;771&quot; data-start=&quot;760&quot;&gt;
&lt;p data-end=&quot;771&quot; data-start=&quot;762&quot;&gt;나중에 써도 늦음&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;

















&lt;/p&gt;&lt;p data-end=&quot;795&quot; data-start=&quot;773&quot;&gt;👉 &lt;strong data-end=&quot;795&quot; data-start=&quot;776&quot;&gt;처음엔 절대 만들 필요 없음&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;그 후 Atlas Population Mode -&amp;gt; Dynamic으로 선택하고 Atlas Width Height는 2048로 둘 다 맞추는 것을 권장한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;이 후 TextMeshPro Text를 눌러 보면 Font 칸이 있는데 여기에 생성한 Font Asset을 선택하면 Font가 바뀌게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;챗 지피티의 도움을 받아 작성하였습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/1147838434516620527/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-font.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1147838434516620527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1147838434516620527'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-font.html' title='[유니티][Unity] 한글 Font 사용방법 (한글 깨짐 방지)'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-1840401939430408062</id><published>2026-01-02T17:43:00.002+09:00</published><updated>2026-01-02T17:43:32.071+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="1f)"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Range(0f"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity][C#] [Range(0f,1f)] public float probaility 뜻</title><content type='html'>&lt;p&gt;&amp;nbsp;[Range(0f,1f)]&amp;nbsp;&lt;/p&gt;&lt;p&gt;public float probability;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;이렇게 적으면 probability값은 0f-1f 사이로 제한이 되게 된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Unity Inspector에서 probability 변수를 슬라이더로 보여주고 값이 0.0 - 1.0 사이로 제한이 된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;게임 내 코드에서는 따로 값 제한을 해주지 않아도 Inspector에서 입력 범위가 자동으로 제한됨&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;단, Inspector에서만 0.0 - 1.0 사이 값을 정하는 거지 코드에서는 무슨 값이든 넣을 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;챗지피티를 참조하여 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/1840401939430408062/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unityc-range0f1f-public-float-probaility.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1840401939430408062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1840401939430408062'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unityc-range0f1f-public-float-probaility.html' title='[유니티][Unity][C#] [Range(0f,1f)] public float probaility 뜻'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-5887467101424078843</id><published>2026-01-01T23:21:00.004+09:00</published><updated>2026-01-01T23:21:47.406+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ScriptableObject"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] ScriptableObject란?</title><content type='html'>&lt;p&gt;&amp;nbsp; 씬에 붙지 않는 데이터 전용 객체 이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;인스펙터에서 값이 수정가능한 데이터 파일이다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;여러 오브젝트가 같은 데이터를 공유하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;씬과 생명주기에서 독립 된 에디터에서 관리 가능한 데이터 덩어리&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;카드 기본 정보, 아이템 스텟, 스킬 쿨타임 등을 저장해 놓는다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;말하자면 스텟을 미리 저장해 놓는 설계도의 역할을 한다고 보면된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;런타임 상태 관리, 플레이어 마다 다른 값 유지 등은 할 수 없다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;에셋과 붙어있는 데이터이기 때문에 에셋 데이터를 바꾸는 게 되기 때문이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;챗지피티의 도움을 받아 작성하였습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/5887467101424078843/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-scriptableobject.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/5887467101424078843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/5887467101424078843'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-scriptableobject.html' title='[유니티][Unity] ScriptableObject란?'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-2793801495826332439</id><published>2026-01-01T23:06:00.002+09:00</published><updated>2026-01-01T23:06:36.629+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TextArea"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] TextArea</title><content type='html'>&lt;p&gt;&amp;nbsp;유니티에서 TextArea를 적으면 Inspector 창에서 텍스트 입력칸이 늘어나는 효과를 준다. 여러줄을 작성해야 되는 스킬 설명과 같은 걸 적을 때 유용하게 쓸 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제미나이의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/2793801495826332439/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-textarea.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/2793801495826332439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/2793801495826332439'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-textarea.html' title='[유니티][Unity] TextArea'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-7684829364673450703</id><published>2026-01-01T21:51:00.002+09:00</published><updated>2026-01-01T21:51:15.657+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="[Serializable]"/><category scheme="http://www.blogger.com/atom/ns#" term="Serializable"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] Serializable 이란</title><content type='html'>&lt;p&gt;&amp;nbsp;1. 유니티 인스펙터 노출 : serializable을 쓰면 유니티 inspector 창에 노출이 되어서 inspector 창에서 데이터를 작성해서 쓸 수 있게 된다.&lt;/p&gt;&lt;p&gt;2. 데이터 저장 및 로드: [Serializable]이 붙어 있으면 해당 객체를 JSON이나 바이너리 파일로 변환하여 저장을 해서 유저가 게임을 끄더라도 현재 스탯이나 보유한 카드를 저장할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제미나이의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/7684829364673450703/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-serializable.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7684829364673450703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7684829364673450703'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2026/01/unity-serializable.html' title='[유니티][Unity] Serializable 이란'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-7754977493919533715</id><published>2025-12-25T20:05:00.002+09:00</published><updated>2025-12-25T20:05:55.679+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="as 형 변환"/><category scheme="http://www.blogger.com/atom/ns#" term="C# as"/><category scheme="http://www.blogger.com/atom/ns#" term="C# as를 이용한 형변환"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="unity 형 변환"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티 형변환"/><category scheme="http://www.blogger.com/atom/ns#" term="형변환"/><title type='text'>[유니티][Unity][C#] as를 이용한 형변환 </title><content type='html'>&lt;p&gt;&amp;nbsp;IHpBarView hpBar = aView;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;BossView bossView = hpBar as BossView;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;if(bossView != null)&lt;br /&gt;{ //bossView function 호출&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;bossView.Die();&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;else&lt;/p&gt;&lt;p&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Debug.LogWarning(&quot;이 뷰는 BossView가 아님&quot;);&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 as 를 통해서 IHpBarView를 상속받는 BossView 형으로 변환 시킬 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제미나이를 참조하여 만들었습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/7754977493919533715/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unityc-as.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7754977493919533715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7754977493919533715'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unityc-as.html' title='[유니티][Unity][C#] as를 이용한 형변환 '/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-941307367917910066</id><published>2025-12-17T21:36:00.001+09:00</published><updated>2025-12-17T21:36:11.336+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LMAdSize.h"/><category scheme="http://www.blogger.com/atom/ns#" term="LMAdSize.h 를 찾을 수 없는 에러"/><category scheme="http://www.blogger.com/atom/ns#" term="LMAdSize.h 에러 고치는법"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>LMAdSize.h 를 찾을 수 없다는 에러가 발생했을 때 해결 방법</title><content type='html'>&lt;p&gt;유니티에서 iOS 빌드를 했을 때 .xcodeproj 로 열면 발생하는 이슈이다.&lt;/p&gt;&lt;p&gt;xcodeproj는 내부적인 코드만을 사용하기 때문에 외부 요소들을 배제하여 빌드하기 때문에 외부에 대한 코드를 가져오지 못해서 발생한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;그래서 .xcworkspace를 열어야 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그런데 보면 xcworkspace가 보이지 않을 수 있다. 이 때 해당 프로젝트에 Podfile 이 만들어졌는지 확인 해보자. 이게 없다면 나도 해결방법을 알지못하는데 이게 있다면 문제는 해결할 수 있다&lt;/p&gt;&lt;p&gt;podfile은 &quot;애드몹이랑 광고를 돌리려면 A,B,C라는 파일들이 필요해&quot; 라는 명단이 적혀 있다. 그런데 이걸 실제로 설치하려면 pod install을 돌려야 한다. 이걸 자동으로 돌리게 되있는데 iOS 환경이 복잡하여 이걸 실행 못하는 상황이 발생한다. 이럴 때 수동으로 pod install을 입력해서 수동 설치를 해줘야 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;이렇게 pod install을 하면 xcodeproj에 이런 외부 부품들을 결합하여 xcworkspace를 만들어 주게 된다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;결론: xcworkspace를 열어서 빌드하면 된다. 그런데 이게 없다면 podfile이 있는지 확인해 보고 있다면 해당 폴더에서 pod install을 하여 xcworkspace를 만들어 실행하면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;제미나이의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/941307367917910066/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/lmadsizeh.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/941307367917910066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/941307367917910066'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/lmadsizeh.html' title='LMAdSize.h 를 찾을 수 없다는 에러가 발생했을 때 해결 방법'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-3321727788010155221</id><published>2025-12-15T21:27:00.001+09:00</published><updated>2025-12-15T21:27:26.328+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="out var damageableTarget"/><category scheme="http://www.blogger.com/atom/ns#" term="TryGetComponent"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>other.TryGetComponent(out var damageableTarget) 이란</title><content type='html'>&lt;p&gt;충돌한 다른 게임 오브젝트에 특정 컴포넌트가 있는지 확인하고, 있다면 해당 컴포넌트의 참조를 안전하게 가져오는 역할을 함&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;TryGetComponent&amp;lt;T&amp;gt;(out T component)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;lt;T&amp;gt; 에 대한 컴포넌트를 찾으라는 것 여기서 이번에는 T가 IDamagable임&lt;/p&gt;&lt;p&gt;Try를 붙여 시도한다는 것이다. 찾으면 true, 못찾으면 false를 반환하고 에러를 발생시키지 않음&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;out T Component(out var damageableTarget)&lt;/p&gt;&lt;p&gt;out 은 찾은 컴포넌트의 참조를 이 변수에 담아서 반환하라는 의미임&lt;/p&gt;&lt;p&gt;var damageableTarget : 컴포넌트를 찾으면 참조가 저장될 새 변수를 선언하고 이름이 damageableTarget이라는 뜻&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;즉, IDamagable을 구현한 컴포넌트가 other에 있는지 확인하고 있으면 damageableTarget 변수에 그 컴포넌트 정보를 담아주고 찾았는지 못 찾았는지 알려달라는 것이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제미나이의 도움을 받아 작성하였습니다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/3321727788010155221/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/othertrygetcomponent-out-var.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/3321727788010155221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/3321727788010155221'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/othertrygetcomponent-out-var.html' title='other.TryGetComponent&lt;IDamagable&gt;(out var damageableTarget) 이란'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-7152468502769440599</id><published>2025-12-14T14:05:00.001+09:00</published><updated>2025-12-14T14:05:09.639+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OnTriggerEnter"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="볼과 보스 중 어디에 OnTriggerEnter를 줘야 하나"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] 볼과 보스가 맞았을 때 OntriggerEnter 처리하는 위치 결정</title><content type='html'>&lt;p&gt;&amp;nbsp;결론적으로 볼에서 처리하는게 좋다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;볼이 날라가서 부딪히면 데미지를 준다는 로직에 맞고&lt;/p&gt;&lt;p&gt;보스가 처리하게 되면 보스가 볼만 맞는게 아니고 레이저도 맞고 미사일도 맞는다면&lt;/p&gt;&lt;p&gt;보스가 일일이 이게 볼인지 레이전지 처리를 해줘야 되서 복잡성이 올라가게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;구글 제미나이의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/7152468502769440599/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-ontriggerenter.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7152468502769440599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7152468502769440599'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-ontriggerenter.html' title='[유니티][Unity] 볼과 보스가 맞았을 때 OntriggerEnter 처리하는 위치 결정'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-2956196660953686611</id><published>2025-12-14T00:17:00.001+09:00</published><updated>2025-12-14T00:17:05.137+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="(... as ..)?.Function()"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="If ... is...."/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity][C#] If ... is ... ... 과  (... as ...)?.Function() 에 대하여</title><content type='html'>&lt;p&gt;&amp;nbsp;IMainCharAttackView Interface와&lt;/p&gt;&lt;p&gt;MainCharAttackView: ImainCharAttackView 로 인터페이스를 상속받는 class가 있을때&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;IMainCharAttackView _view;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MainCharAttackPresenter(IMainCharAttackView view)&lt;br /&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; _view = view;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;로 되어 있을 때 이런 식으로 사용하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;if( _view is MainCharAttackView concreteView)&lt;br /&gt;{&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;concreteView.function();&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp; 이 뜻은 _view가 MainCharAttackView 라면 concreteView에 _view를 할당해서 쓰라는 것이다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;그래서 MainCharAttackView의 function을 concreteView가 사용하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;사실은 _view가 이미 MainCharAttackView 타입이기에 그냥 써도 되지만 이런 if문을 씀으로 인해서 정확하게 MainCharAttackView 형임을 확인하고 명확하게 concreteView를 통해 안정적으로 실행하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;(_view as MainCharAttackView)?.Function() 은&lt;/p&gt;&lt;p&gt;&amp;nbsp;_view를 MainCharAttackView형으로 바꿨을 때 된다면 Function을 실행하고&lt;/p&gt;&lt;p&gt;형이 안 맞으면 null값을 반환하라는 뜻이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Google AI의 도움을 받아 작성하였습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/2956196660953686611/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unityc-if-is-as-function.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/2956196660953686611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/2956196660953686611'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unityc-if-is-as-function.html' title='[유니티][Unity][C#] If ... is ... ... 과  (... as ...)?.Function() 에 대하여'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-5331325123499133236</id><published>2025-12-06T18:56:00.001+09:00</published><updated>2025-12-06T18:56:10.305+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HP 코드 재사용"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="보스와 주인공 HP 처리 방법이 같으면 코드를 재사용하는 방법"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><category scheme="http://www.blogger.com/atom/ns#" term="코드 재사용"/><title type='text'>[유니티][Unity] 보스HP와 주인공HP를 계산하는 방법이 같을 때 하나의 코드로 처리하는 방법</title><content type='html'>&lt;p&gt;&amp;nbsp; 보스HP가 애니메이션 효과로 줄어들게 구현하고 보니&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;(7가지 색의 SingleBar 를 만들고 curHpBar는 빨주노초파남보 라면&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;밑에 있는 BelowHpBar는 주노초파남보빨 로 나오게 하고&lt;/p&gt;&lt;p&gt;&amp;nbsp;curHpBar가 Singlebar의 끝까지 가면 주황이나오고 belowHpBar는 노랑이 나오도록 설계하고&lt;/p&gt;&lt;p&gt;이를 루프를 돌리고 마지막에 hp가 0이 될 때는 검은색으로 나오게 만들었다.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;이 것을 보스에만 구현해놓고 이제 주인공 HP에 구현하려고 보니, 이 코드를 다시 만들어야 되는 것이다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그래서 재사용할 수 있게 만들어 보니 몇가지 테크닉이 들어가게 되었다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. static class를 지정한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; 사용 이유를 정확하게는 알 수 없으나 공용으로 쓰이는 메소드를 static class에 넣어 쓰면 재사용하기에 좋다고 한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;이 경우에 GetColorByBarIndex로 7가지 색중 어느 index를 불러와야 할지 정하는 메소드를 static으로 만들어서 공용으로 컬러 값을 가져올 수 있게 하였다.&lt;/p&gt;&lt;p&gt;public static class HpColorHelper&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public static Color GetColorByBarIndex(int index, List&amp;lt;Color&amp;gt; barColors, Color depletedColor)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (index &amp;lt; 0) return depletedColor;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (barColors == null || barColors.Count == 0) return Color.white;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return barColors[index % barColors.Count];&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. baseHpView를 만들어 거기에 색깔 계산과 애니메이션효과와 현재피/전체피 텍스트를 적게 했다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;이렇게 하면 bassHpView를 상속받으면 bassHpView에서 로딩하는 UpdateHpBar(...) 클래스를&amp;nbsp;&lt;/p&gt;&lt;p&gt;가져오게 되니 한번 만든 코드를 재사용할 수 있게 되었다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. Interface를 사용하여 Presenter에서 view를 가져온다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;아직 정확하게 감이 잡힌 건 아닌데 interface를 쓰면 Presenter에서 view가 바뀌어도 코드 바꿀 필요가&amp;nbsp; 없어서 유연성이 증가된다고 한다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;이런 식으로 interface를 선언 하고&lt;/p&gt;&lt;p&gt;public interface IHpBarView&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; void UpdateHpBar(int currentHp, int maxHp);&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;Interface를 상속 받아 같은 구조로 된 메소드에 구현 한다.&lt;/p&gt;&lt;p&gt;using UnityEngine;&lt;/p&gt;&lt;p&gt;using UnityEngine.UI;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;public class BaseHpBarView : MonoBehaviour, IHpBarView&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; [SerializeField] private Image hpImage;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 인터페이스 메서드 구현 → 반드시 public&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public void UpdateHpBar(int currentHp, int maxHp)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float ratio = (float)currentHp / maxHp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hpImage.fillAmount = ratio; // 단순 예제&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그러면 하위 클래스는 코드 없이 사용가능하다.&lt;/p&gt;&lt;p&gt;public class BossHpBarView : BaseHpBarView&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // IHpBarView 다시 구현할 필요 없음&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 필요 시 UpdateHpBar override 가능&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;public class MainCharHpBarView : BaseHpBarView&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 특화 로직 override 가능&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Presenter에서 호출 할 떄는 아래와 같이 쓴다.&lt;/p&gt;&lt;p&gt;public class HpBarPresenter : MonoBehaviour&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; private IHpBarView view;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; private int currentHp = 100;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; private int maxHp = 100;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // Init 메서드로 런타임에 View 주입&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public void Init(IHpBarView view)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.view = view;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; view.UpdateHpBar(currentHp, maxHp); // 초기화&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public void TakeDamage(int dmg)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; currentHp = Mathf.Max(0, currentHp - dmg);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; view.UpdateHpBar(currentHp, maxHp);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;핵심은 IHpBarView를 넘겨받아 쓴다는 것이다. 그래서 baseView던지 boss던지 mainchar던지 상관없이 view를 넘겨 받을 수 있다는 게 핵심으로 보인다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;chatGPT의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/5331325123499133236/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-hp-hp.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/5331325123499133236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/5331325123499133236'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-hp-hp.html' title='[유니티][Unity] 보스HP와 주인공HP를 계산하는 방법이 같을 때 하나의 코드로 처리하는 방법'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-2172641214372225801</id><published>2025-12-06T16:34:00.002+09:00</published><updated>2025-12-06T16:34:53.611+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Color값 공유"/><category scheme="http://www.blogger.com/atom/ns#" term="HpColorConfig"/><category scheme="http://www.blogger.com/atom/ns#" term="ScriptableObject"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] Color 값을 메인케릭터와 보스가 같이 공유해서 사용하는 방법</title><content type='html'>&lt;p&gt;&amp;nbsp;ScriptableObject를 통해 만들어진 컬러 값을 가져와서 사용하면 된다.&lt;/p&gt;&lt;p&gt;아래 코드 같이 만든 후 사용한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;using NUnit.Framework;&lt;/p&gt;&lt;p&gt;using UnityEngine;&lt;/p&gt;&lt;p&gt;using System.Collections.Generic;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;[CreateAssetMenu(menuName = &quot;UI/HP Color Config&quot;)]&lt;/p&gt;&lt;p&gt;public class HpColorConfig : ScriptableObject&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Color&amp;gt; hpBarColors;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public Color animatedBarColor;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public Color depletedHPColor = Color.black;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;CreateAssetMenu를 통해 UI&amp;nbsp; -&amp;gt; HP Color Config라는 메뉴가 생겼다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Project의 Assets 폴더에서 Create -&amp;gt; UI -&amp;gt; HP Color Config를 누르면 생기는데 그 이름을 HP Color Config로 저장하자. 이것을 HP Color Config Asset이라 한다. 그걸 눌러보면 위에 선언한 Color 값들을 Inspector에서 조절할 수 있다. 이렇게 만들어 놓은 값들을 사용하기 위해 사용하려는 곳에 가서&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; [Header(&quot;Config&quot;)]&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; [SerializeField] private HpColorConfig colorConfig;&lt;/p&gt;&lt;p&gt;로 선언하고 이 colorConfig 값에 만들어 놓은 HP Color Config Asset을 넣으면 연동이 된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;그 후 colorConfig.hpBarColors[index] 라는 식으로 사용하면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;chatGPT의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/2172641214372225801/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-color.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/2172641214372225801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/2172641214372225801'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-color.html' title='[유니티][Unity] Color 값을 메인케릭터와 보스가 같이 공유해서 사용하는 방법'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-1769152483656116800</id><published>2025-12-06T12:04:00.001+09:00</published><updated>2025-12-06T12:04:20.636+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Text"/><category scheme="http://www.blogger.com/atom/ns#" term="TextMeshPro"/><category scheme="http://www.blogger.com/atom/ns#" term="TextMeshproUGUI"/><category scheme="http://www.blogger.com/atom/ns#" term="TextMeshproUGUI와 TMP_Text 비교"/><category scheme="http://www.blogger.com/atom/ns#" term="TMP_Text"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] Text 보다는 TextMeshPro를 써야 하는 이유와 TextMeshProugui와 tmp_text 비교</title><content type='html'>&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;381&quot; data-start=&quot;184&quot;&gt;&lt;thead data-end=&quot;211&quot; data-start=&quot;184&quot;&gt;&lt;tr data-end=&quot;211&quot; data-start=&quot;184&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;189&quot; data-start=&quot;184&quot;&gt;항목&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;196&quot; data-start=&quot;189&quot;&gt;Text&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;211&quot; data-start=&quot;196&quot;&gt;TextMeshPro&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;381&quot; data-start=&quot;242&quot;&gt;&lt;tr data-end=&quot;266&quot; data-start=&quot;242&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;248&quot; data-start=&quot;242&quot;&gt;선명도&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;255&quot; data-start=&quot;248&quot;&gt;❌ 낮음&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;266&quot; data-start=&quot;255&quot;&gt;✅ 매우 선명&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;291&quot; data-start=&quot;267&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;276&quot; data-start=&quot;267&quot;&gt;해상도 대응&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;283&quot; data-start=&quot;276&quot;&gt;❌ 깨짐&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;291&quot; data-start=&quot;283&quot;&gt;✅ 완벽&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;321&quot; data-start=&quot;292&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;302&quot; data-start=&quot;292&quot;&gt;외곽선/그림자&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;310&quot; data-start=&quot;302&quot;&gt;❌ 제한적&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;321&quot; data-start=&quot;310&quot;&gt;✅ 매우 강력&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;350&quot; data-start=&quot;322&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;327&quot; data-start=&quot;322&quot;&gt;성능&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;340&quot; data-start=&quot;327&quot;&gt;❌ 상대적으로 나쁨&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;350&quot; data-start=&quot;340&quot;&gt;✅ 더 좋음&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;381&quot; data-start=&quot;351&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;362&quot; data-start=&quot;351&quot;&gt;숫자 전용 폰트&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;369&quot; data-start=&quot;362&quot;&gt;❌ 불편&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;381&quot; data-start=&quot;369&quot;&gt;✅ 최적화 가능&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 차이가 많이 나기에 TextMeshPro를 택하는게 맞다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TextMeshProUGUI와 TMP_Text는 조금 역할이 달라&lt;/p&gt;&lt;p&gt;UI는 TextMeshProUGUI를 쓰고 TMP_Text는 부모 클래스야&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TextMeshProUGUI: 실제 UI에 붙는 컴포넌트로 HP바, 버튼, HUD, 데미지 숫자 전부 이걸로 써&lt;/p&gt;&lt;p&gt;TMP_Text는 TextMeshProUGIUI와 TextMeshPro의 공통 부모 클래스로 추상화용 타입이야. Inspector에서 붙는 컴포넌트는 아니고 스크립트에서 타입 통합용으로 사용하지.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TMP_Text text; 라고 하면&amp;nbsp;&lt;/p&gt;&lt;p&gt;UI용 TextMeshProUGUI 일 수도 있고 3D용 TextMeshPro 일수도 있어&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그래서 언제 사용하는 건데?&lt;/p&gt;&lt;p&gt;UI 고정일때 (HP바,&amp;nbsp; HUD) TextMeshProUGUI를 쓰면&lt;/p&gt;&lt;p&gt;&amp;nbsp;가장 안전&lt;/p&gt;&lt;p&gt;&amp;nbsp;Inspector 연결 실수 없음&lt;/p&gt;&lt;p&gt;&amp;nbsp;의도 명확함&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;UI/3D 텍스트 둘 다 받고자 하면 TMP_Text를 쓰지&lt;/p&gt;&lt;p&gt;&amp;nbsp;공용 처리 가능하고 재사용성이 올라가지만 실수로 3D TMP랑 연결될 수도 있어&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; chatGPT를 참조하여 만들었습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/1769152483656116800/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-text-textmeshpro-textmeshprougui.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1769152483656116800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1769152483656116800'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-text-textmeshpro-textmeshprougui.html' title='[유니티][Unity] Text 보다는 TextMeshPro를 써야 하는 이유와 TextMeshProugui와 tmp_text 비교'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-7228017667552217062</id><published>2025-12-05T22:50:00.002+09:00</published><updated>2025-12-05T22:50:42.390+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Anchor 프리셋이 좌우 Stretch"/><category scheme="http://www.blogger.com/atom/ns#" term="DOTween"/><category scheme="http://www.blogger.com/atom/ns#" term="Stretch에서 동작하는 HP 감소 에니메이션"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] Anchor 프리셋이 좌우 Stretch일 때  HP 깍이는 에니메이션 코드(feat.DOTween)</title><content type='html'>&lt;p&gt;&amp;nbsp;애니메이션 효과를 구현하기 위해서는 세가지 Image가 필요하다.&lt;/p&gt;&lt;p&gt;Background, Animation, Cur Image 가 필요하다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;여기서 백그라운드 이미지는 피 색을 7가지로 했을 경우에 curImage의 색상보다 index -1 값을 가지게 해서 마치 다음 피통을 미리 보여주는 효과를 가지게 한다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그리고 Animation 은 피가 깍이는 효과를 애니메이션 효과를 넣어서 표현하는 것이다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;여기서 DOTween을 쓰게 되면 애니메이션을 주기위해 lerp timer를 넣어서 어쩌고 저쩌고 해서 마치 선형적으로 내려가는 듯이 보이는 효과를 주는 것을 알아서 해준다. 그래서 코드가 단순해졌다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그리고 그 위에 현재 피통을 보여주고 피가 깍이는 순간 깍인 곳까지 바로 이동한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그렇게 하면 피가 깍이는 순간 바로 내려가고 내려간만큼 애니메이션 효과가 느리게 따라오면서 애니메이션 효과를 주면서 피가 깍이는 듯이 보이게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;이 과정을 다른 블로그를 참조로 해서 만들었더니 대략 100줄 정도의 코드가 필요했는데 이게 Stretch 모드를 아닌 상황에서 구현이 되어 있었는데, Stretch 모드를 적용하니 먹통이 되버린 것이다...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그래서 난감했는데 제미나이에게 물어보니 DOTween을 추천해줬다. AI가 나보다 훨씬 코드를 잘 아는 이상황이 특이점이 이미 와버린듯 하다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;그래서 DOTWEEN을 적용하니 10줄로 깔끔하게 떨어져 버렸다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;아래 코드를 참조하면 된다.&lt;/p&gt;&lt;p&gt;public void AnimateBarWidth(float targetRatio, Color curBarColor, Color backBarColor)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Vector2 targetAnchorMax = new Vector2(targetRatio, mainBarRectTransform.anchorMax.y);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // -------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 1. [즉시 동작] 빠른 바 (mainBarRectTransform) 처리: HP 표시 및 색상 갱신&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // A. 앵커를 목표 위치로 즉시 설정 (뒤쪽의 느린 바가 노출되도록)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; mainBarRectTransform.anchorMax = targetAnchorMax;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // B. 빠른 바의 색상을 Presenter가 결정한 최종 색상으로 즉시 설정합니다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; if (mainBarImage != null)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mainBarImage.color = curBarColor;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; backImage.color = backBarColor;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // -------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 2. [천천히 동작] 느린 바 (damageMarkerRectTransform) 처리: 배경 애니메이션&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; damageMarkerRectTransform.DOKill(true); // 이전 트윈 정리&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // A. 색상 고정: 느린 바의 색상을 인스펙터에 설정된 고정 배경 색상으로 즉시 설정&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // * 색상 깜빡임 로직이 모두 제거됨 *&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; if (damageMarkerImage != null)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; damageMarkerImage.color = slowBarOriginalColor;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // B. 앵커(크기) 애니메이션 (천천히 줄어들기)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 이 부분이 유일한 애니메이션입니다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; damageMarkerRectTransform.DOAnchorMax(targetAnchorMax, duration)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .SetEase(Ease.OutQuad);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제미나이의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/7228017667552217062/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-anchor-stretch-hp-featdotween.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7228017667552217062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/7228017667552217062'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-anchor-stretch-hp-featdotween.html' title='[유니티][Unity] Anchor 프리셋이 좌우 Stretch일 때  HP 깍이는 에니메이션 코드(feat.DOTween)'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-1576671282926623794</id><published>2025-12-05T12:13:00.003+09:00</published><updated>2025-12-05T12:13:41.911+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HP bar 크기가 폰 화면에 따라 바뀌는 방법"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="Unity HP Bar"/><category scheme="http://www.blogger.com/atom/ns#" term="Unity HP Bar UI"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] HP bar UI 크기가 폰 화면에 따라 바뀌는 방법</title><content type='html'>&lt;p&gt;&amp;nbsp; HP Bar를 만들었다면 게임 할 때 원하는 위치에 원하는 크기로 보이고 싶을 것이다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;그런데, 이럴수가 폰 마다 화면액정이 다 다른데, 이걸 어떻게 하나.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;어떻게 하면 HP Bar 크기를 폰 크기에 상관 없이 일정하게 보여줄 수 있을까?&lt;/p&gt;&lt;p&gt;&amp;nbsp;이렇게 하려면, 폰마다의 크기에 맞춰서 크기를 보여줘야 한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;말하자면, 동적으로 크기가 바뀌어야 하는 것이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;그렇게 하려면 아래와 같이 하면 된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Canvas scalar를 scale with Screen size로 동적으로 변경되도록 설정해준다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;체력바 Rect Transform으로 이동하여 화면 상단에 좌우로 꽉차고 위아래는 화면 크기의 5%인 HP Bar를 만든다고 치자.&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. 앵커 프리셋 설정(가장 중요)&lt;/p&gt;&lt;p&gt;&amp;nbsp;체력바 오브젝트(예: Image 또는 Panel)의 Rect Transform으로 이동&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. Anchor Presets 버튼 클릭&lt;/p&gt;&lt;p&gt;&amp;nbsp;2. Alt 키를 누른 채, 상단 우측에 있는 가로 스트레치(Stretch, Top) 프리셋을 선택한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Alt 키를 누르면 앵커와 함께 피벗(Pivot)과 포지션(Position)이 동시에 이동하여 원하는 자리에 배치됨&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 너비 IWidth) 설정: 좌우 꽉 채우기&lt;/p&gt;&lt;p&gt;&amp;nbsp;앵커를 가로 스트레치로 설정했기 때문에, 너비(Width)대신 Left와 Right 오프셋 값이 활성화 됨&lt;/p&gt;&lt;p&gt;Left: 화면 왼쪽 경계(Anchor)로 부터의 거리를 0부터 설정가능&lt;/p&gt;&lt;p&gt;Right: 화면 오른쪽 경계(Anchor)로 부터의 거리를 0부터 설정가능&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 높이 (Height) 설정: 화면 높이의 5%&lt;/p&gt;&lt;p&gt;&amp;nbsp;높이는 Canvas Scaler에 설정된 Reference Resolution을 기준으로 계산 된 값을 입력하면 됨&lt;/p&gt;&lt;p&gt;1. 기준 해상도 확인: Canvas Scaler에 설정된 Reference Resolution의 높이 확인 (예: 1080x1920)&lt;/p&gt;&lt;p&gt;2. 높이 계산: 기준 높이의 5% 계산&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;1920* 0.05 = 96&lt;/p&gt;&lt;p&gt;3. 최종 Rect Transform 값 :&lt;/p&gt;&lt;p&gt;&amp;nbsp;Anchors: Left0, right 1(가로 스트레치)&lt;/p&gt;&lt;p&gt;Pivot: (0.5, 1)&lt;/p&gt;&lt;p&gt;&amp;nbsp;Left: 0&lt;/p&gt;&lt;p&gt;&amp;nbsp;Right: 0&lt;/p&gt;&lt;p&gt;&amp;nbsp;Height: 96 (사용자의 Reference Resolution 에 따라 달라짐)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;여기서 Height를 96으로 하드코딩해도 resolution에 따라 값이 변하는 이유는 canvas Scaler 컴포넌트의 Scale with screen size 설정을 했기 때문이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;이렇게 설정하면, 캔버스 스케일러의 기준 해상도(Reference Resolution)에 대한 상대적인 크기로 계산해 준다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;캔버스 스케일러의 동적 스케일링 원리&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. 기준 해상도 (Reference Reolution)의 역할&lt;/p&gt;&lt;p&gt;&amp;nbsp;96이라는 Height를 설정하면, Reference Resolution에서 96 크기를 가지는 것을 의미함&lt;/p&gt;&lt;p&gt;&amp;nbsp;2. 유니티가 런타임에 접속한 장시의 실제 해상도를 기준 해상도와 비교하여 계산된 스케일링 계수를 캔버스 전체에 적용함&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/1576671282926623794/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-hp-bar-ui.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1576671282926623794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1576671282926623794'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-hp-bar-ui.html' title='[유니티][Unity] HP bar UI 크기가 폰 화면에 따라 바뀌는 방법'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-3985368557665250766</id><published>2025-12-05T11:29:00.002+09:00</published><updated>2025-12-05T11:29:35.895+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Anchor"/><category scheme="http://www.blogger.com/atom/ns#" term="Pivot"/><category scheme="http://www.blogger.com/atom/ns#" term="Position"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="앵커"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><category scheme="http://www.blogger.com/atom/ns#" term="포지션"/><category scheme="http://www.blogger.com/atom/ns#" term="피벗"/><title type='text'>[유니티][Unity] 피벗(Pivot)과 앵커(Anchor)와 포지션(Postion)에 대하여</title><content type='html'>&lt;p&gt;&amp;nbsp;앵커, 피벗, 위치는 유니티 UI 시스템에서 요소의 크기, 위치, 그리고 반응성을 결정하는데 사용되는 Rect Transform 컴포넌트의 세 가지 핵심 개념이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;다양한 화면 크기(해상도)에 대응 하는 UI를 만들 때 매우 중요하다&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. 앵커(Anchor)&lt;br /&gt;&amp;nbsp;부모 요소(화면 또는 다른UI)의 어느 위치를 기준으로 삼을지를 결정하는 네 개의 작은 삼각형 모양의 마커이다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; UI 요소의 위치와 크기를 결정하는 기준점&amp;nbsp; 또는 기준 프레임으로 부모 요소의 크기가 변할 때, 이 기준점에 고정되거나 기준점을 따라 늘어나면서 UI의 반응성(Resilience)을 결정한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;앵커의 두 가지 주요 모드&lt;/p&gt;&lt;p&gt;&amp;nbsp;앵커 마커가 모여 있느냐, 떨어져 있느냐에 따라 요소의 위치와 크기 작동 방식이 달라진다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. 고정 모드(Fixed/Grouped Anchor)&lt;/p&gt;&lt;p&gt;&amp;nbsp;마커 상태: 앵커 마커 네 개가 한점에 모여 있음( 예: 중앙, 좌상단 등)&lt;/p&gt;&lt;p&gt;&amp;nbsp;결과: 요소의 크기는 고정되고, 위치만 앵커를 따라 이동함. Position은 앵커를 기준으로 한 거리가 됨&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;2. 스트레치 모드 (Stretch/Split Anchor)&lt;/p&gt;&lt;p&gt;&amp;nbsp;마커 상태: 앵커 마커가 서로 떨어져 있음 (예: 좌우로 떨어져 있음)&lt;br /&gt;&amp;nbsp;결과: 요소의 크기가 부모 요소의 크기에 따라 늘어남. Left, Right, Top, Bottom 값이 활성화 되며, 이 값들은 앵커 경계선으로부터의 패딩(Padding) 거리를 지정함&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 위치(포지션) 및 Offset (오프셋)&lt;/p&gt;&lt;p&gt;&amp;nbsp;위치 값은 UI 요소의 피벗(Pivot)이 앵커가 지정한 기준점 또는 기준 프레임에서 얼마나 떨어져 있는지 나타냄&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;앵커를 기준으로 측정되는 UI 요소의 실제 중심점 위치 (픽셀 단위)&lt;/p&gt;&lt;p&gt;요소의 정확한 화면상 좌표를 결정함. 앵커가 어디에 있느냐에 따라 값의 의미가 달라진다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;앵커가 고정 모드 일때는 Pos X, Pos Y로 표시되고, 앵커가 스트레치 모드일 때는 Left, Right, Top, Bottom(오프셋) 값으로 표시 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Position(0,0) 이 앵커가 화면 중앙이라면 중앙을 뜻하고 좌상단이면 좌상단 모서리를 의미함&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;3. 피벗 (Pivot)&lt;/p&gt;&lt;p&gt;&amp;nbsp;피벗은 UI 요소 자체 내에서 변환(크기 조절, 회전 등)이 일어나는 기준점임&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;요소 자체의 로컬 좌표계에서 (0,0)을 나타내는 회전 및 크기 조절의 중심점&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;(0,0) 부터 (1,1) 사이의 정규화 된 값으로 표현 됨. (0.5,0.5)가 기본값으로, 요소의 정중앙을 의미함&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;요소를 회전시키거나 스케일을 변경할 때, 이 피벗을 중심으로 변화가 일어남. 또한 Position 값이 피벗을 기준으로 측정됨.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;세 요소의 관계 요약&lt;/p&gt;&lt;p&gt;&amp;nbsp;세 가지 개념은 다음과 같은 순서로 상호작용함&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. 앵커가 부모 화면/요소 내에서 UI의 기준점/기준 영역을 정함 (어디를 따라 움직일 것인가?)&lt;/p&gt;&lt;p&gt;&amp;nbsp;2. 위치 (Position/Offset)가 앵커 기준점에서 피벗(Pivot) 까지의 거리를 결정하여 요소의 최종 위치를 확정함 (기준으로부터 얼마나 떨어져 있을 것인가?)&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;3. 피벗은 요소 내에서 움직임과 변형의 중심 역할을 함 (내 안에서 어디를 중심으로 돌고 늘어날 것인가?)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;따라서 화면 크기가 바뀌어 앵커의 위치가 변하면, Position 값은 유지된 채 요소의 피벗이 애어를 따라가게 되어, UI 요소가 의도한 반응성을 갖게 됨&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;위치는 피벗 위치를 변경 (0,0) -&amp;gt; (1,1) 로 하면 위치(Position)도 변경하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;위치(Position)가 피벗 위치에 따라 자동으로 변경되더라도 위치는 수동으로 지정할 필요가 있다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;위치(Position)의 가장 중요한 역할은 UI 요소의 실제 위치를 결정하는 것이기 때문이다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;1. 포지션의 핵심 역할: 배치 (Placement)&lt;/p&gt;&lt;p&gt;&amp;nbsp;UI 요소를 앵커(Anchor)를 기준으로 원하는 곳에 놓기 위해 포지션 값을 사용함&lt;/p&gt;&lt;p&gt;&amp;nbsp;예) 앵커를 화면 정중앙 (0.5,0.5)에 설정했다고 할 때&lt;/p&gt;&lt;p&gt;&amp;nbsp;버튼을 중앙에서 오른쪽으로 50픽셀 떨어진 곳에 배치하고 싶다면, Pos X를 50으로 직접 입력해야 함(Pos X:50, Pos Y: 0)&lt;/p&gt;&lt;p&gt;&amp;nbsp;이 경우에는 유니티가 Position을 자동으로 계산해 주지 않음. 개발자가 원하는 Offset(오프셋) 거리를 포지션 값으로 지정하는 것임&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;2. 피벗 변경은 일회성 보정&lt;/p&gt;&lt;p&gt;&amp;nbsp;피벗을 변경하는 작업은 보통 UI 요소를 배치하는 작업 중 한 번만 이루어진다. 그 이후에는 앵커를 기준으로 포지션 값을 직접 변경하며 UI요소들을 정렬하고 배치하는 것이 주된 작업 방식임&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;결론은, 피벗 변경 시의 자동 조정은 위치를 고정하는 기능이고, 포지션을 수동으로 입력하는 것은 위치를 이동시키는 기능이라고 구분하여 이해하면 됨&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;제미나이의 도움을 받아 작성하였습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/3985368557665250766/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-pivot-anchor-postion.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/3985368557665250766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/3985368557665250766'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-pivot-anchor-postion.html' title='[유니티][Unity] 피벗(Pivot)과 앵커(Anchor)와 포지션(Postion)에 대하여'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-521867168074413876</id><published>2025-12-03T19:33:00.003+09:00</published><updated>2025-12-03T19:33:57.410+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IOS"/><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="windows에서 iPhone에 앱 빌드하기"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity][MacOS][iOS][Windows] 유니티 Windows 개발 환경에서 아이폰에 앱 빌드하기</title><content type='html'>iPhone 에 빌드하려면 macOS를 이용해야만 한다.&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;이 제약사항으로 인해 Windows -&amp;gt; iPhone으로 앱 빌드하는 과정이 꽤 먼길을 가게 된다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;Git 을 이용해 코드를 받아 오게 되는데 해 보니 Unity Version Control이라는 방법도 있었다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;편한 방법을 쓰면 되겠다. 용량도 체크 해 보고&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;여기서 gitlab을 사용하게 됐는데 알고보니 .gitignore로 서버에 안 올릴파일과 올릴 파일을 선별하는데&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;이 전에 프로젝트가 2.5Gb라 큰 용량이 필요하다 했는데 .gitignore를 공식 사이트에서 unity 개발용으&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;로 받아온 후 서버에 올려 보니 10메가 정도 밖에 안되었다. 그래서 굳이 gitlab을 안 써도 됐을 거 같다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;이렇게 gitlab으로 윈도우즈의 코드를 올리면 그 코드를 맥에서 받을 수 있다. git 을 쓰기 때문에 이렇게 안 하면 매번 빌드 새로 할 때마다 전체코드 혹은 변경된 코드들을 일일이 usb로 복사해서 넘겨야 되는데 사실상 어렵다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;이렇게 해서 gitlab을 통해 맥북에 코드를 옮기게 되었다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;옮기다 보니 알게 된 것이 ssh key 를 통해서 git을 사용하는 게 편했다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;https로 할려고 하니 token 을 발행해야 되는데 이게 발행 시점에만 비밀번호?를 준다. 그리고 닫는 순간 이 비번을 알 수가 없다. 그리고 엄청 길어서 이걸 제대로 쳐 넣기가 어렵다. 물론 복사 붙여 넣기 하면 되는데 윈도우즈에서 복사 붙여 넣기 해서 해결 했더니 맥에서 다시 비번을 물어보는데 이걸 가져와서 쓰기가 어렵고 번거롭다. ssh key는 각 각 windows 나 맥에서 받아 쓰면 되고 한번만 입력하면 되니 편리했다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;이렇게 맥북에서 project 코드를 다 받고 유니티로 실행해 보니 아니 hierarchy에 Main Camera만 덩그러니 있는 거 아닌가.. 여기서 뭐가 잘못 됐지 하고 많이 헤맸는데 찾다찾다 보니 그냥 scene을 로딩 안해서 그랬던 것이었다. 매우 간단한데 처음 써보면 헤깔릴만 하지 않나 쉽다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;이렇게 macOS에 코드를 옮기면 이제 iOS (iPhone)에 빌드를 해 넣으면 된다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;물론 또 첨부터 이런 저런 이슈들로 한번에 안되는데 구글 AI한테 물어 보니 해결이 된다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;그렇게 iOS에서 처음으로 게임을 빌드 해 봤는데 UI가 너무 작게 나오고 터치 패드도 말을 안듣고 할 일이 참 많아졌다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;구글 AI의 도움을 받아 작성하였습니다.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/521867168074413876/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unitymacosioswindows-windows.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/521867168074413876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/521867168074413876'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unitymacosioswindows-windows.html' title='[유니티][Unity][MacOS][iOS][Windows] 유니티 Windows 개발 환경에서 아이폰에 앱 빌드하기'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-1150817461982145937</id><published>2025-12-02T22:33:00.003+09:00</published><updated>2025-12-02T22:34:23.969+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dcctrldrv.sys"/><category scheme="http://www.blogger.com/atom/ns#" term="dcctrldrv.sys 삭제"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="메모리 무결성 오류 해결"/><title type='text'>[Windows] dcctrldrv.sys 라는 호환되지 않는 드라이버 때문에 메모리 무결성을 켤 수 없을 때</title><content type='html'>&lt;p&gt;&amp;nbsp;dcctrldrv.sys를 삭제 하고 재부팅하니 동작한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;dcctrldrv.sys는 c:\Windows\System32\ 에 있다.&lt;/p&gt;&lt;p&gt;삭제 후 재부팅하고&amp;nbsp;&lt;/p&gt;&lt;p&gt;데이터 무결성은 검색에 윈도우즈 보안을 치고 들어가서 장치 보안에 가면 나타난다.&lt;/p&gt;&lt;p&gt;키고 재부팅하면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;구글 AI 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/1150817461982145937/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/windows-dcctrldrvsys.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1150817461982145937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1150817461982145937'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/windows-dcctrldrvsys.html' title='[Windows] dcctrldrv.sys 라는 호환되지 않는 드라이버 때문에 메모리 무결성을 켤 수 없을 때'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-5576412883961382376</id><published>2025-12-02T20:43:00.001+09:00</published><updated>2025-12-02T20:43:24.524+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bitbucket"/><category scheme="http://www.blogger.com/atom/ns#" term="github"/><category scheme="http://www.blogger.com/atom/ns#" term="gitlab"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="윈도우 코드를 맥북에서 받는 방법"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] 윈도우에서 개발 중인 iOS 게임(모바일)을 맥북에서 받아서 빌드하는 편한 방법은(gitHub,GitLab,BitBucket)</title><content type='html'>&lt;p&gt;&amp;nbsp;웹 기반 코드 호스팅 및 협업 플랫폼을 쓰면 좋다.&lt;/p&gt;&lt;p&gt;GitHub,GitLab, Bitbucket은 모두 Git을 기반으로 한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;조금씩 차이점이 있다. 이 부분은 직접 검색해 보면 좋겠다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;유니티가 용량이 커서 용량을 많이 주는 GitLab을 선택하게 될 거 같다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;이러한 플랫폼을 쓰면 굳이 usb로 윈도우 -&amp;gt; 맥 으로 코드를 옮기는 불편함을 없앨 수 있다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;거기다가 새로 만든 코드를 올리면 그걸 맥에서 받아서 쓰면 된다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;USB로 옮긴다면 계속해서 덮어쓰기를 해줘야 하는데 그런 작업을 안해도 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;구글 AI를 참조하여 만들었습니다.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/5576412883961382376/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-ios.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/5576412883961382376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/5576412883961382376'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity-ios.html' title='[유니티][Unity] 윈도우에서 개발 중인 iOS 게임(모바일)을 맥북에서 받아서 빌드하는 편한 방법은(gitHub,GitLab,BitBucket)'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-6197992232224865640</id><published>2025-12-02T16:41:00.007+09:00</published><updated>2025-12-02T16:42:30.453+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IOS"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS에서 Apple Developer Program을 사야지만 앱을 테스트할 수 있나"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity][iOS] 유니티 소스 iOS 폰에서 앱 테스트 할 때 Apple Developer Program(애플 개발자 프로그램)을 사야만 되는가</title><content type='html'>&lt;p&gt;&amp;nbsp; 꼭 Apple Developer Program(애플 개발자 프로그램)을 써야만 할 필요는 없다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; 아래 제약사항이 있음에도 무료로 쓰고자 한다면 쓸 수 있다.&lt;/p&gt;&lt;ul class=&quot;KsbFXc U6u95&quot; data-complete=&quot;true&quot; data-processed=&quot;true&quot; jscontroller=&quot;mPWODf&quot; jsuid=&quot;ai8Zmc_1k&quot; style=&quot;background-color: #101218; color: #e6e8f0; font-family: &amp;quot;Google Sans&amp;quot;, Roboto, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 16px 0px; padding-inline-start: 16px; padding: 0px;&quot;&gt;&lt;li data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAA&quot; data-sae=&quot;&quot; jscontroller=&quot;vsuOFb&quot; jsuid=&quot;ai8Zmc_1l&quot; style=&quot;list-style: disc; margin: 0px 0px 12px; padding-inline-start: 4px; padding: 0px;&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cp=&quot;&quot; jscontroller=&quot;fly6D&quot; jsuid=&quot;ai8Zmc_1m&quot; style=&quot;overflow-wrap: break-word;&quot;&gt;&lt;span class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; jscontroller=&quot;VhkxAe&quot; jsuid=&quot;ai8Zmc_1n&quot; style=&quot;font-weight: 700;&quot;&gt;설치 유효 기간 (가장 큰 차이):&lt;/span&gt;&amp;nbsp;기기에 설치된 앱은&amp;nbsp;&lt;span class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; jscontroller=&quot;VhkxAe&quot; jsuid=&quot;ai8Zmc_1o&quot; style=&quot;font-weight: 700;&quot;&gt;7일 동안만&lt;/span&gt;&amp;nbsp;실행 가능합니다. 7일이 지나면 Xcode를 통해 다시 빌드하고 설치해야 합니다. 유료 계정은 앱이 만료되지 않습니다.&lt;/span&gt;&lt;/li&gt;&lt;li data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAB&quot; data-sae=&quot;&quot; jscontroller=&quot;vsuOFb&quot; jsuid=&quot;ai8Zmc_1p&quot; style=&quot;list-style: disc; margin: 0px 0px 12px; padding-inline-start: 4px; padding: 0px;&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cp=&quot;&quot; jscontroller=&quot;fly6D&quot; jsuid=&quot;ai8Zmc_1q&quot; style=&quot;overflow-wrap: break-word;&quot;&gt;&lt;span class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; jscontroller=&quot;VhkxAe&quot; jsuid=&quot;ai8Zmc_1r&quot; style=&quot;font-weight: 700;&quot;&gt;서비스 제한:&lt;/span&gt;&amp;nbsp;푸시 알림, Game Center, CloudKit 등 특정 유료 개발자 서비스는 사용할 수 없습니다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAC&quot; data-sae=&quot;&quot; jscontroller=&quot;vsuOFb&quot; jsuid=&quot;ai8Zmc_1s&quot; style=&quot;list-style: disc; margin: 0px 0px 12px; padding-inline-start: 4px; padding: 0px;&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cp=&quot;&quot; jscontroller=&quot;fly6D&quot; jsuid=&quot;ai8Zmc_1t&quot; style=&quot;overflow-wrap: break-word;&quot;&gt;&lt;span class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; jscontroller=&quot;VhkxAe&quot; jsuid=&quot;ai8Zmc_1u&quot; style=&quot;font-weight: 700;&quot;&gt;배포 불가:&lt;/span&gt;&amp;nbsp;App Store에 앱을 제출할 수는 없습니다.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;구글 AI의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/6197992232224865640/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unityios-ios-apple-developer-program.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/6197992232224865640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/6197992232224865640'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unityios-ios-apple-developer-program.html' title='[유니티][Unity][iOS] 유니티 소스 iOS 폰에서 앱 테스트 할 때 Apple Developer Program(애플 개발자 프로그램)을 사야만 되는가'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-1672654579079065157</id><published>2025-12-01T13:15:00.008+09:00</published><updated>2025-12-01T13:26:51.195+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="개발 시 구글 애드몹 계정 만들어야 하나"/><category scheme="http://www.blogger.com/atom/ns#" term="구글 애드몹"/><category scheme="http://www.blogger.com/atom/ns#" term="구글 애드몹 계정 활성화 해야 광고 기능 개발 가능한가"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] 구글 애드몹 광고 개발 시에 애드몹 계정을 만들거나 활성화 해야 하나?</title><content type='html'>&lt;p&gt;&amp;nbsp; 개발 과정에서는 테스트 ID를 사용하면 되기 때문에 애드몹을 활성화할 필요가 없다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;실제로 6개월 동안 광고 게재를 하지 않으면 다시 비활성화 되기 때문에 개발 기간이 6개월 이상 걸릴 것으로 보인다면 테스트 ID로 개발 하다가 출시 직전에 애드몹을 활성화하고 애드몹 연동 테스트 및 실제 배포를 하면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;샘플 ios 앱 ID&lt;/p&gt;&lt;pre dir=&quot;ltr&quot; is-upgraded=&quot;&quot; style=&quot;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(241, 243, 244); box-sizing: inherit; color: #37474f; direction: ltr; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; line-height: 20px; margin: 0px; overflow-x: auto; padding-block: 32px 24px; padding-inline: 24px; padding: 24px; position: relative;&quot; syntax=&quot;scdoc&quot; translate=&quot;no&quot;&gt;Sample AdMob app ID: ca-app-pub-3940256099942544~1458002511&lt;/pre&gt;&lt;p&gt;출처:&amp;nbsp;&lt;a href=&quot;https://developers.google.com/admob/ios/quick-start?hl=ko&quot; target=&quot;_blank&quot;&gt;https://developers.google.com/admob/ios/quick-start?hl=ko&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;구글 AI 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/1672654579079065157/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1672654579079065157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/1672654579079065157'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/12/unity.html' title='[유니티][Unity] 구글 애드몹 광고 개발 시에 애드몹 계정을 만들거나 활성화 해야 하나?'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-15574789670561031</id><published>2025-11-30T20:33:00.001+09:00</published><updated>2025-11-30T20:33:14.751+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IOS"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="게임 Windows 에서 IOS로 변경해서 개발하기"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><title type='text'>[유니티][Unity] Windows 로 개발 중이던 게임 IOS로 변경하기</title><content type='html'>&lt;p&gt;&amp;nbsp;프로젝트 오픈&lt;/p&gt;&lt;p&gt;File -&amp;gt; Build Profiles 오픈&lt;/p&gt;&lt;p&gt;iOS 선택 -&amp;gt; 우측의 Switch Platform 선택&lt;/p&gt;&lt;p&gt;&amp;nbsp;이 후 작업이 진행되고 종료 후&lt;/p&gt;&lt;p&gt;iOS 옆에 Active 가 뜨는지 확인&lt;/p&gt;&lt;p&gt;Active가 뜨면 아래 설정을 해줘야한다.&lt;/p&gt;&lt;p&gt;Player Settings 설정&lt;/p&gt;&lt;p&gt;&amp;nbsp;Edit -&amp;gt; Project Settings -&amp;gt; Player -&amp;gt; iOS 탭 선택 -&amp;gt; Other Settings 열기&lt;/p&gt;&lt;p&gt;하위의 Identification 하위의 Bundle Identifer 입력란 확인&lt;/p&gt;&lt;p&gt;com.yourcompanyname.yourappname 으로 작성해야 되고 유니크해야 한다.&lt;/p&gt;&lt;p&gt;영문 소문자,숫자,마침표만 사용가능함&lt;/p&gt;&lt;p&gt;마침표로 시작하거나 끝낼 수 없고, 숫자나 마침표로 시작은 권장하지 않음&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;한번 정하면 변경이 어렵기에 쉰중하게 결정 필요함&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;구글 AI의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/15574789670561031/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/11/unity-windows-ios.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/15574789670561031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/15574789670561031'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/11/unity-windows-ios.html' title='[유니티][Unity] Windows 로 개발 중이던 게임 IOS로 변경하기'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-8905042758431571979</id><published>2025-11-30T20:20:00.001+09:00</published><updated>2025-11-30T20:20:15.059+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="IOS"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="개발 환경"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티 개발환경 확인 방법"/><title type='text'>[유니티][Unity] 현재 개발 중인 환경이 Windows 인지 IOS인지 Android 인지 확인하는 방법</title><content type='html'>&lt;p&gt;&amp;nbsp;프로젝트를 연다.&lt;/p&gt;&lt;p&gt;File -&amp;gt; Build Profiles 확인&amp;nbsp;&lt;/p&gt;&lt;p&gt;하면 다양한 OS 가 나타나는데 그 중 오른쪽에 Active 라고 적혀있는 OS가 개발 중인 OS 이다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/8905042758431571979/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/11/unity-windows-ios-android.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/8905042758431571979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/8905042758431571979'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/11/unity-windows-ios-android.html' title='[유니티][Unity] 현재 개발 중인 환경이 Windows 인지 IOS인지 Android 인지 확인하는 방법'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4269806382658593631.post-250613872545400316</id><published>2025-11-28T22:00:00.001+09:00</published><updated>2025-11-28T22:00:17.256+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Instantiate"/><category scheme="http://www.blogger.com/atom/ns#" term="Instantiate 후 화면에 나오지 않음"/><category scheme="http://www.blogger.com/atom/ns#" term="Instantiate(uiPrefab)"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="유니티"/><category scheme="http://www.blogger.com/atom/ns#" term="프리팹이 화면에 나오지 않음"/><title type='text'>[유니티][Unity] Instantiate(uiPrefab) 이 화면에 안 나오는 이유</title><content type='html'>&lt;p&gt;&amp;nbsp;uiPrefab을 연결 시켜주고 Instantiate(uiPrefab)을 해도 UI가 보이지 않았다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;이유는 연결하려는 부모 캔버스를 연결해줘야 되기 때문이다.&lt;/p&gt;&lt;pre style=&quot;background-color: #1d1e26; color: #e6e8f0; font-size: 14px;&quot;&gt;&lt;code jsuid=&quot;Nd0IEf_v&quot;&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;using&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; UnityEngine;
&lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;using&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; UnityEngine.UI; &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// UI 관련 기능을 사용하려면 이 네임스페이스가 필요합니다.&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; UIManager : MonoBehaviour
{
    &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// 유니티 인스펙터에서 캔버스 오브젝트를 드래그하여 할당해주세요.&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
    [SerializeField] &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; Transform parentCanvasTransform;

    &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// 인스턴스화할 UI 프리팹 (예: 버튼, 패널 등)&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
    [SerializeField] &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; GameObject uiPrefab;

    &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; Start()
    {
        &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// Start 시점에 UI 생성 함수 호출 예시&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
        SpawnUIElement();
    }

    &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; SpawnUIElement()
    {
        &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; (parentCanvasTransform != &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt; &amp;amp;&amp;amp; uiPrefab != &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;)
        {
            &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// 1. Instantiate() 메서드를 사용하여 프리팹 생성과 동시에 캔버스의 자식으로 설정합니다.&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
            &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// 두 번째 매개변수로 부모 Transform을 전달합니다.&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
            GameObject newUIElement = Instantiate(uiPrefab, parentCanvasTransform);

            &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// 추가적으로 생성된 UI 요소의 이름이나 위치를 조정할 수 있습니다.&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
            newUIElement.name = &lt;/span&gt;&lt;span class=&quot;CS0cqb&quot; style=&quot;color: #81c995;&quot;&gt;&quot;DynamicUI_Instance&quot;&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;;
            &lt;/span&gt;&lt;span class=&quot;ClTQqc&quot; style=&quot;color: #9aa0a6; font-style: italic;&quot;&gt;// newUIElement.GetComponent&amp;lt;RectTransform&amp;gt;().anchoredPosition = new Vector2(0, 0);&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
        }
        &lt;/span&gt;&lt;span class=&quot;mexSqb&quot; style=&quot;color: #c58af9;&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;
        {
            Debug.LogError(&lt;/span&gt;&lt;span class=&quot;CS0cqb&quot; style=&quot;color: #81c995;&quot;&gt;&quot;Canvas Transform 또는 UI Prefab이 할당되지 않았습니다. 인스펙터를 확인해주세요.&quot;&lt;/span&gt;&lt;span class=&quot;undefined&quot;&gt;);
        }
    }
}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이렇게 parentCanvasTransform을 할당해줘야 한다.&lt;/p&gt;&lt;p&gt;그래서 GameObject newUIElement = Instantiate(uiPrefab, parentCanvvasTransform);&lt;/p&gt;&lt;p&gt;으로 부모 Transform을 전달해주면 화면에 나타나게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;구글 AI의 도움을 받아 작성하였습니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamchallenger.blogspot.com/feeds/250613872545400316/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dreamchallenger.blogspot.com/2025/11/unity-instantiateuiprefab.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/250613872545400316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4269806382658593631/posts/default/250613872545400316'/><link rel='alternate' type='text/html' href='http://dreamchallenger.blogspot.com/2025/11/unity-instantiateuiprefab.html' title='[유니티][Unity] Instantiate(uiPrefab) 이 화면에 안 나오는 이유'/><author><name>DynamicPro</name><uri>http://www.blogger.com/profile/11966660154765054808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>