본문 바로가기
728x90
반응형

PROGRAMING📚/Unity📑109

[UNITY]Player Input System 으로 캐릭터 컨트롤 하기 Input System 설치하기 Window-Package Manager - Input System 을 검색해서 설치를 해준다. ProjectSetting - Player - Other Setting - Configuation 에서 어떤 Input System 을 사용할 지 선택이 가능하다 Old나 New 나 현재까지 유용하기 때문에 Both를 선택해서 사용할 것이다. Input Action Asset 을 사용해서 캐릭터 움직이게 하기 Input Action을 생성하기 위해서는 Project 에서 + 버튼을 누르면 다양한 생성 Asset들이 나온다 다양한 Asset들 중 최하단에 있는 Input Actions를 선택해서 InputActions을 하나 만들어준다. 생성한 Input Action을 더블 클릭.. 2023. 7. 16.
[UNITY]싱글톤 작성 패턴 방법 3가지 싱글톤 작성 패턴 방법 3가지 기본적으로 get,set 속성을 사용하는 것은 동일하다. private static Player instance; public static Player Instance { get { return instance; } set { instance = value; } } public static Player instanseField; public static Player GetInstanceField() { return instanseField; } public static void SetInstanceField(Player instanceField) { Player.instanseField = instanceField; } 복잡성을 최소화 하고 클린한 코드를 사용하기 위해서 다.. 2023. 6. 9.
[UNITY]TryGetComponet()와 GetComponet의 차이와 사용하는 방법 TryGetComponet()와 GetComponet의 차이와 사용하는 방법 TryGetComponet() TryGetComponet()함수는 Bool형의 함수로 해당 컴포넌트가 있을 경우, TRUE/FALSE 로 반환해주는 함수이다. 선언하는 방법은 다음과 같이 두가지 방법이 있다. public bool TryGetComponet(Type type, out 찾는컴포넌트 변수명); public bool TryGetComponet(out 찾는컴포넌트 변수명); if(raycastHit.transform.TryGetComponent(out ClearCount clearCount_Try)) { //Has clearcount TryGetComponent.Interact(); } *유니티 2019.2 버전부터 사.. 2023. 6. 8.
[UNITY]모델링 머티리얼 적용시, Alpha texture 적용하기 모델링 머티리얼 적용시, Alpha texture 적용하기 해당 글의 버전은 Unity 2021.3.9f1 에서 적용하였다. 다른 옛 버전에서는 Particle-Alpa blend 뭐시기 해서 들어가서 적용했는데 생긴건지 모르겠는데 제대로 적용하는 방법을 찾은거 같다. 모델링안에 텍스쳐를 적용 했을 때 왼쪽 처럼 Alpha 값이 적용되지 않고 텍스쳐 그대로 적용되는 경우가 있다. 다음 문제를 까먹지 않고 기억하려고 적어본다. 텍스처에 Alpha 값이 있는지 확인하기 일단 적용하기 위해서는 적용하려는 Texture에 Alpha 채널이 있어야한다. 없으면 포토샵을 사용해서 Alpha채널을 생성 해주어야한다. Standard 버전 생성한 Marterial 안에서 RenderingMode를 Cutout을 해주면.. 2023. 6. 5.
[UNITY]레이캐스트(Raycast)를 사용해서 충돌 처리하기 레이캐스트(Raycast)를 사용해서 충돌 처리하기 레이캐스트는 광선(Ray)을 쏘는 것을 의미하고 광선(Ray)에 부딪히는 오브젝트(Collider)가 있을 때, 이 오브젝트에 대한 거리, 위치 등의 정보를 반환 해준다. 레이캐스트를 사용하는 방법은 다양한데 원하는 속성을 매개변수에 맞게 넣어주면 된다. Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo , float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction) Origin(시작점)에서 Direction 방향으로 레이(Ray)를 쏠때 오브젝트와 부딛혔을 경우, True를 반환하고 .. 2023. 6. 2.
[UNITY]Input System Refactor(리펙터링) - 구조 재조정 Input System Refactor(리펙터링) - 구조 재조정 깨끗한 코드를 만들기 위해서는 복잡성을 최소화하고 관리하는 것이 중요하다. 모든 클래스는 한가지만 수행해야하고 Player 클래스가 있을 경우 Player 만 처리해야한다. Refactor 는 결과의 변경 없이 코드의 구조를 재조정하는 것을 의미한다. 아래의 코드는 Input.GetKey()를 사용해서 A,D,S,W에 따라서 캐릭터가 움직이는 것을 레팩터링을해 가독성을 높이고 유지보수를 편하게 해줄 것이다. private void Update() { Vector2 inputVector = new Vector2(0,0); //왼쪽 if (Input.GetKey(KeyCode.A)) { inputVector.x = -1f; } //오른쪽 if.. 2023. 6. 1.
[UNITY]시네머신(Cinemachine)사용해서 카메라가 캐릭터 따라 다니게 만들기 시네머신(Cinemachine)사용해서 카메라가 캐릭터 따라 다니게 만들기 패키지 설치하기 Window - Package Manager - Chinemachine 가상의 시네머신을 하나 만들어 주면 CM vcam 이라는 오브젝트가 하나 생성되고 CinemachineVirtualCamera 라는 컴포넌트가 있는 것을 확인 할 수 있다. 기존에 있던 Main Camera에는 CinemachineVirtualCamera와 같은 표시의 아이콘이 오른쪽에 붙어 있고 Main Camera 안에도 CinemachineBrain이라는 컴포넌트가 추가 된 것을 확인 할 수 있다. 기존의 카메라와 달라진 건 없지만 가상의 카메라가 생기고 나면 메인카메라의 설정은 움직일 수 없게 된다 만약 카메라의 구도를 바꾸고 싶을 경우.. 2023. 5. 31.
[UNITY]캐릭터(Character) 이동(Move)과 회전(Rotation) 만들기 캐릭터(Character) 이동(Move) W,A,S,D를 사용해서 이동하는 캐릭터를 만들어 줄 것이다 일단 오브젝트를 하나 만들어서 Player라는 스크립트를 하나 생성해준다. 생성하고 열어보면 다음과 같이 Start()와 Update()가 존재하는데 사용하지 않으면 지워주는 것이 좋다 특히 Update()는 매프레임 마다 돌아가기 때문에 지워주는 것이 좋다 그리고 깔끔한 코드를 작성 해주기 위해서는 private나 public 등 접근 제한자를 항상 명시 해주는 것이 좋다 W,A,S,D를 입력 했음을 계속 확인 해주기 위해서 Update문이 필요하기 때문에 private 형식으로 하나 만들어 준다. private void Update() { //매 프레임 마다 계속 호출된다. } 이제 Update에서.. 2023. 5. 30.
[UNITY]포스트프로세싱(Post Processing)으로 시각적 효과 주기 포스트프로세싱(Post Processing)으로 시각적 효과 주기 시작하기 전에 프로젝트가 UPR가 설치되어 있는지 확인한다. 만약에 기존 버전이 URP 버전이 아니라면 업그레이드해야 한다. https://j2su0218.tistory.com/490 [유니티 Unity] 유니버설 렌더 파이프라인(URP) 프로젝트 변경하기 유니버설 렌더 파이프라인(URP) 프로젝트 변경하기 URP 패키지 다운 받기 기본적으로 맨처음에 프로젝트를 생성할 때 URP 모드로 만드는 방법도 있으나 기존의 프로젝트에서 URP로 변경하고 싶을 j2su0218.tistory.com 빈 게임오브젝트를 하나 만들어서 Volume 컴포넌트를 추가해 준다 그런 다음 비어있는 Profile안에 새로운 Volume Profile을 만들어 준다 .. 2023. 5. 25.
유니티(Unity3D) 작업 단축키 팁 TIP 유니티(Unity) 작업 단축키 팁TIP Scene에서 보고싶은 오브젝트를 찾아 이동하기, 가까이 보기 오브젝트가 많을 경우 해당 오브젝트를 가까이 보고 싶은 경우에 Shift + F 를 사용하면 그 오브젝트로 Scene화면이 이동한다. Scene화면에 보이는 대로 카메라를 이동시켜 Game씬에도 동일하게 보여주는 방법 MainCamera의 각도를 Scene안의 각도와 같게 만들어주는 단축키가 있다. 메인 카메라를 선택한 다음에 CTRL +SHIFT+F를 눌러주면 위와 같이 카메라의 위치를 Scene뷰에 보는 화면으로 자동으로 바꿔준다. 2023. 5. 24.
[유니티 Unity]다른 스크립트 함수,변수 가져오는 방법 다른 스크립트 함수,변수 가져오는 방법 1. 사용하길 원하는 함수와 변수 앞에 Static 을 사용하여 어디서든 접근이 가능하도록 만드는 방법 OthersScript.sc 와 SampleScript.sc를 만들어서 변수명 앞에 static을 붙여줘서 전역변수로 만들어 주면 SampleScript.sc안에서도 사용할 수 있게 된다. 2. Find(string findObject) 함수를 사용하여 해당하는 이름을 가진 오브젝트의 컴포넌트에 접근해서 불러오는 방법 OthersScript가 들어가있는 오브젝트의 이름을 찾아서 오브젝트안에 있는 스크립트 함수를 가져오는 방법이다. GameObject.Find("스크립트를 가지고 있는 오브젝트의 이름")GetComponent(); 이방법으로 찾는것도 가능하나 Fin.. 2023. 5. 11.
[유니티Unity]모바일 앱 안에서 웹페이지 보여주는 방법(WebView) 모바일 앱 안에서 웹페이지 보여주는 방법 일단 공지사항을 만들기 위해서 유니티안에서 웹을 보여주는 웹뷰 패키지를 다운받아 준다. 구글에서 unity WebView를 검색하면 관련 패키지가 올라가있는 Github가 나온다 https://github.com/gree/unity-webview GitHub - gree/unity-webview Contribute to gree/unity-webview development by creating an account on GitHub. github.com 그리고 패키지를 다운받아서 프로젝트 안에 넣어 주어야한다. 패키지를 여는 방법은 2가지가 있다. 첫번째는sample/Assets/Sample.unity 안에 들어가서 샘플 씬을 여는 방법이 있다. 두번째는 dist.. 2023. 5. 2.
[UNITY]Keystore(키스토어) 생성하기 Keystore(키스토어) 생성하기 유니티를 빌드 하기 위해서는 반드시 Keystore를 생성해주어야하는데 생성하는데 복잡하지 않아서 정리 해보려고 한다. File->Build Settings으로 들어가서 Build Settings 에서 Player Settings으로 들어가준다. Project Settings 에서 Player - Publishing Settings 에서 Keystore Manager를 눌러서 새로운 Key를 만들어 주면된다. 키스토어(Keystore)란 개발자 본인 증명을 위해서 사용되는 키를 모아둔 곳이다. 구글 스토어 업로드 시에 반드시 필요하기 때문에 생성한 키스토어는 잘 보관해두어야한다. 작성해야 하는 부분 Alias : 해당 Key의 별칭(이름) Password /Confir.. 2023. 5. 2.
[유니티Unity] Localization 컴포넌트 접근해서 Table 변경하기 Localization 컴포넌트 접근해서 Table 변경하기 현지화 작업을 하다가 보면 하나의 오브젝트 안에서 다양한 동작을 하는 경우가 있다. 나같은 경우는 레벨 1일 경우에는 Text안에 "레벨1입니다." 2일 경우에는 "레벨 2입니다." 처럼 상황에 따라서 변경해주어야 하는 상황이라서 Localize String Event에서 String Reference를 변경 해주어야 했다. 일단은 String Table 안에서 상황에 맞는 string 을 영문 버전과 한글 버전에 맞춰서 입력 해주었다. 그리고 LocalizeStringEvnet 를 사용하기 위해서 네임스페이스 : using UnityEngine.Localization.Components 를 추가해준다. Localize String Evnet를.. 2023. 4. 28.
[유니티Unity] 유니티에서 원하는 이미지 프린트 출력 하는 방법 유니티에서 원하는 이미지 프린트 출력 하는 방법 유니티를 이용해서 원하는 이미지를 출력 하는 방법을 작성 해보려고 한다. 유니티에서 프린트를 출력하기 위해서는 출력하고 싶은 이미지가 있는 파일 경로가 존재하는지 확인하고 윈도우의 그림판 기능을 이용해서 프린트를 하는 방식으로 출력한다. 그림판 이용해서 출력하기 using System.IO; using System.Diagnostics; public void PrintButtonOn() { string path = "C:\\Users\\USER\\AppData\\LocalLow\\PrintPictureImage.png"; FileInfo fileInfo = new FileInfo(path); //파일 경로 클래스 생성 UnityEngine.Debug.Log.. 2023. 3. 31.
[유니티Unity]Erro: TextMeshPro 폰트 생성이 안되는 경우 Erro: TextMeshPro 폰트 생성이 안되는 경우 새로운 TextMeshPro 폰트를 생성하기 위에서 폰트 설정을 해주고 Generate Font Atlas를 해줬는데 다음과 같은 알림이 뜨면서 폰트가 생성안되고 있었다. Font Asset Creator - Error Code [Invalid_File_Path] has occurred trying to load the [OAGothic-ExtraBold] font file. This typically results from the use of an incompatible or corrupted font file. UnityEngine.Debug:Log (object,UnityEngine.Object) 해결 방법은 나같은 경우는 폴더명이 한글로 되.. 2023. 3. 9.
[유니티Unity]Error:Assembly 'Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll 해결하는 방법 Error:Assembly 'Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll 해결하기 Assembly 'Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll' will not be loaded due to errors: Unable to resolve reference 'UnityEditor.iOS.Extensions.Xcode'. Is the assembly missing or incompatible with the current platform? Reference validation can be disabled in the Plugin Inspecto.. 2023. 3. 6.
[유니티 Unity] UI Dropdown 기능 할당/삭제 보호되어 있는 글 입니다. 2023. 2. 10.
[유니티 Unity]Input Filed, EventHandle 자동 선택 하는 방법 Input Filed, EventHandle로 자동 선택 하는 방법 기본적으로 Input Filed 안에 다양한 기능이 있어서 해당 기능을 응용해서 자동으로 InputFiled가 선택되는 것을 구현했다. Input Filed를 두개를 두고 1번 빈칸이 채워지면 2번 빈칸으로 이동하고 2번 빈칸을 지웠을 경우, 1번 빈칸으로 다시 이동하는 것을 구현하고 있다. EventSystem event; if(Q_answer_InF.isFocused == false) { Q_answer_InF.OnPointerClick(new PointerEventData(event)); } 이런식으로 선택이 안되어있을 경우를 체크해서 선택이 안되어있으면 OnPointerClick(new PointerEventData(event)).. 2023. 2. 8.
[유니티 Unity]InputField에서 Android(iOS) 가상 키보드 숨기기 InputField에서 Android(iOS) 가상 키보드 숨기기 기존에는 Window를 이용한 플랫폼이라서 상관없었으나 모바일 버전으로 플랫폼이 변경되면서 문제가 생겼다. 현재 내가 만든 프로젝트에서는 UI에 키보드가 따로 있고 InputField 2개를 생성해두고 글자 버튼을 눌러서 글을 쓰거나 입력 할 수 있도록 만들어 놨는데 버튼을 입력 받을 때마다 InputField 이다 보니 모바일 키보드가 나와서 영향을 주었다. 그래서 이걸 없애는 방법을 찾아보려고 여기저기 찾아봤었는데 Input Field 에서 Hide Mobile Input 을 체크하면 된다길래 체크를 했는데 여전히 나오는 것이다(?) 그래서 이게 뭐지 하고 메뉴얼을 찾아봤는데 모바일 장치의 온스크린 키보드에 연결된 기본 입력 필드를 숨.. 2023. 2. 8.
[유니티 Unity]구글 애드몹, 앱 오프닝 광고 적용하기 보호되어 있는 글 입니다. 2023. 2. 7.
[유니티 Unity] 구글 애드몹 배너(BannerView) 광고 넣기 유니티에서 배너 광고 넣기 전면 광고 넣는 방법은 이전 글에서 확인 해주세요 이번에는 전면 광고가 아닌 유니티 배너 광고를 넣어보려고 합니다. 패키지 다운받고 넣는 방법은 아래에서 확인해 주세요 https://j2su0218.tistory.com/514#toc-link-1 [유니티 Unity] 구글 애드몹 전면 광고 넣는 방법 Google AdMob 구글 애드몹 광고 넣기 일단 구글 애드몹 사이트로 들어가서 원하는 광고의 방식을 설정해주어야한다. https://admob.google.com/intl/ko/home/ Google AdMob: 모바일 앱 수익 창출 인앱 광고를 사용 j2su0218.tistory.com 배너 광고 넣는 방법 일단 광고 애드몹을 넣기 위해서 using GoogleMobileAd.. 2023. 2. 6.
[유니티 Unity] 구글 애드몹 전면(InterstitialAd) 광고 넣는 방법 Google AdMob 구글 애드몹 광고 넣기 일단 구글 애드몹 사이트로 들어가서 원하는 광고의 방식을 설정해주어야한다. https://admob.google.com/intl/ko/home/ Google AdMob: 모바일 앱 수익 창출 인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요. admob.google.com 광고 단위 추가버튼을 눌러서 광고 단위를 만들어 준다. 광고 단위 ID : 이 광고 단위에 할당된 고유의 ID로 이 ID를 이용해서 앱의 광고 단위를 구현한다. https://github.com/googleads/googleads-mobile-unity/releases Releases · googleads.. 2023. 2. 3.
[유니티Unity]유니티에서 인앱 업데이트 지원 하기 유니티에서 인앱 업데이트 지원 하기 구글 콘솔에 새로운 버전을 업데이트했을 때, 인앱 업데이트 기능을 넣어주지 않으면 사용자가 직접 앱을 업데이트시켜주어야 한다. 하지만 중요한 기능의 업데이트 일 경우, 업데이트를 해주어야하기 때문에 이러한 경우에 앱 안에서 업데이트를 진행할 것 인지 아닌지에 대해서 확인해주어야 하기 때문에 다음과 같이 안드로이드에서 인앱 업데이트를 지원해주고 있다. https://developer.android.com/guide/playcore/in-app-updates/unity?hl=ko 인앱 업데이트 지원(Unity) | Android 개발자 | Android Developers 인앱 업데이트 지원(Unity) 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분.. 2023. 1. 27.
[유니티 Unity]Unity Localization으로 다국어 지원 기능 넣기 지금까지 프로젝트를 진행하면서 하나의 프로젝트로 한국어 버전, 영문 버전 등 한프로젝트를 만들때 마다 기존 프로젝트를 복제해서 작업을 해주었는데 한국어 프로젝트에서 수정되면 영문버전에서도 수정해주어야하고 어디에는 수정되었는데 어디에는 수정안되있는 아주 곤란한 상황들이 많았다. 결국 다음 프로젝트를 만들때부터는 다국어 지원 기능을 넣기로 하였다. Unity Localization으로 다국어 지원 기능 넣기 Localization 세팅하기 다국어 지원 기능을 넣기위해서 다음 기능을 PackageManager - Localization 을 넣어주어야한다. PackageManager에서 Localization이 나오지 않는다면 2021.2 버전 이상의 패키지에서는 Localization이 표시 되나 이하의 버전.. 2023. 1. 13.
[유니티 Unity]Error : No cloud project ID was found by the Analytics SDK. 해결하기 (2021.3.9f1) 현재 2021.3.9f1 버전으로 프로젝트를 업데이트 하고 나서 부터 갑자기 다음과 같은 버그가 뜨기 시작하길래 무슨 말인가 해서 찾아봤다. No cloud project ID was found by the Analytics SDK. This means Analytics events will not be sent. Please make sure to link your cloud project in the Unity editor to fix this problem. Analytics 라는 프로그램 패키지에서 발생하는 문제라고 뜨는데 https://community.gamedev.tv/t/error-when-integrating-to-an-new-version-of-unity/210671/3 Error wh.. 2023. 1. 12.
[유니티 Unity]Error : Screen position out of view frustum 해결 하기 Screen position out of view frustum 해결 하기 게임 개발 중에 평소와 같이 실행을 하고 있었는데 갑자기 다음과 같은 오류가 뜨면서 몇백개의 경고창이 뜨는것을 발견했다. 코드 내용 ▽ 더보기 Screen position out of view frustum (screen pos 0.000000, 0.000000, 3215.134766) (Camera rect 0 0 839 900) UnityEngine.Rendering.Universal.UniversalRenderPipeline:RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Camera) StylizedWater.PlanarReflect.. 2023. 1. 10.
[유니티 Unity]국가별 앱 이름 바꾸는 방법 유니티, 국가별 앱 이름 바꾸는 방법 유니티에서 앱을 빌드 하고 출시한 앱을 안드로이드에서 다운 받았을 때 Project Setting - Player 안에 Product Name으로 설정해 놓은 이름으로 설치가 되는데 앱이름을 국가 별로 다르게 표시해 주기 위해서 다음 설정을 해주어야한다. 1. res 폴더 생성하기 Assets\Plugins\Android\에 res폴더가 업을 경우, res 폴더를 생성해준다. 2021.2 이상의 버전인 경우 Assets\Plugins\Android\res.androidlib\res 폴더안에서 작업해주면된다. ▽ res.android 폴더 생성 방법은 다음과 같다. 더보기 https://j2su0218.tistory.com/495 [유니티 Unity] 빌드 에러 : O.. 2023. 1. 6.
[유니티 Unity] 2021.03.9f1 버전에서 해주어야하는 사항들 보호되어 있는 글 입니다. 2023. 1. 5.
[유니티 Unity]Error building : Win32Exception: ApplicationName='powershell', CommandLine='-ExecutionPolicy Bypass -File 해결하기 Error building : Win32Exception: ApplicationName='powershell', CommandLine='-ExecutionPolicy Bypass -File 해결하기 Win32Exception: ApplicationName='powershell', CommandLine='-ExecutionPolicy Bypass -File "C:/Program Error building Player: Win32Exception: ApplicationName='powershell', CommandLine='-ExecutionPolicy Bypass -File "C:/Program Api 31버전으로 업그레이드하려고 SDK Update를 했는데 다음 오류가 떠서 1차 당황하고 보통 빌드 에러.. 2023. 1. 4.
728x90
반응형