본문 바로가기
728x90
반응형

PROGRAMING📚/Unity📑109

[유니티 Unity] 빌드 에러 : OBSOLETE - Providing Android resources 빌드 에러 : OBSOLETE - Providing Android resources 기존에 사용하는 빌드 버전 2020.3.23 에서 2021.3.9f1 으로 버전업을 하면서 다음과 같은 에러가 발생한다는 것을 알게되었다. 회사 언니가 해당 방법을 알려주셔서 쉽게 해결 할 수 있었지만 혹시 몰라서 나도 따로 정리 하려고한다. 해당 문제는 res 라이브러리를 2021.2 이상의 버전에서는 지원을 해주지 않는다고 한다. 그래서 발생하는 버그라는데 이걸 고치려면 다음과 같이 해주어야 한다. OBSOLETE - Providing Android resources in Assets/Plugins/Android/res was removed, please move your resources to an AAR or an.. 2023. 1. 4.
[유니티 Unity] 깃허브,Mac에서 한글 깨지는 경우 해결하는 방법 깃허브,Mac에서 한글 깨지는 경우 해결하는 방법 Visual studio안에서 작성된 한글들이 맥이나 리눅스에 올리면 한글이 이상하게 나오는 것을 보고 해결 책을 찾아서 여기저기 돌아 다녔는데 다음과 같은 현상은 공통적으로 인코딩이 달라서 그렇다고 한다. Visual Studio는 기본적으로 ANSI로 인코딩 되기 때문에 인코딩 형식을 바꿔주어야 한다. 윈도우를 제외하곤 거의다 utf-8을 사용한다. Mac에서 한글이 깨지는 현상은 공통적으로 Encoding이 EUC-KR이나 WESTERN 등으로 되어 있어서 그렇다. 따라서 Encoding을 Unicode (UTF-8) 또는 Korean(Mac OS)으로 변경해주면 해결된다. 1. 고급 저장 옵션으로 인코딩 하기 인코딩하여 저장하기를 누르면 [고급 저.. 2023. 1. 3.
[유니티 Unity] 오브젝트 원하는 위치로 이동시키기(USE. 코루틴) 오브젝트 원하는 위치로 이동시키기(USE. 코루틴) 오브젝트 원하는 위치로 천천히이동시키기 화살표 버튼을 눌렀을 때 왼쪽버튼을 누르면 왼쪽으로 이동하고 오른쪽 버튼을 누르면 오른쪽으로 이동하는 코드를 만들려고 한다 맨처음에 이 문제로 엄청 애를 먹었다.. 코드 대로 라면 정상적으로 이동이 되어야하는데 내가 원하는대로 구현이 되지 않아서 의문이였는데 유니티에서 보통 오브젝트를 움직이거나 서서히 변화를 주기 위해서 프레임 단위마다 실행되는 Update() 함수에 코드를 작성한다고 한다. 그래서 대부분 원하는 위치로 이동시키에 대한 정보를 찾으면 대부분 Update()안에서 코드를 사용하는것을 볼 수있다. Update는 프레임마다 실행되는 만큼 대부분의 작업을 의존하게되면 프레임 드롭같이 최적화 문제가 발생하.. 2022. 12. 28.
[유니티 Unity]하이어라키(Hierarchy)오브젝트 활성화 단축키 스페이스바(Space Bar)를 사용해 하이어라키(Hierarchy)오브젝트 활성화 1. 단축키 관리자 열기 단축키 관리자에서 키보드 단축키를 확인하고 관리할 수 있습니다. 단축키는 Unity 커맨드에 바인딩된 키 또는 키 조합입니다. 커맨드는 에디터에서 실행되는 동작입니다. 예를 들어 R 키는 씬 뷰에서 Scale 툴을 활성화하는 커맨드에 바인딩되어 있습니다. 단축키 관리자는 Unity의 메인 메뉴에서 액세스할 수 있습니다. Windows 및 Linux에서 Edit > Shortcuts를 선택한다. macOS에서 Unity > Shortcuts를 선택한다. 출처: https://docs.unity3d.com/kr/2020.3/Manual/UnityHotkeys.html 원래 오브젝트를 활성화 하는 단축.. 2022. 12. 22.
[유니티 Unity] 유니티 버전 업데이트시 패키지매니저 에러 해결 유니티 버전 업데이트시 패키지매니저 에러 해결 혹시 모르닌까 파일 압축 해두고 하자.. Error searching for packages. 파일 압축을 풀었는데 갑자기 다음과 같은 에러가 발생해서 검색해봤더니 다음과 같은 방법을 추천해 주었다. 방법 1) 방법 2) 나 같은 경우는 이 방법으로 해결하였는데 유니티 패키지 매니저 안에 보면 설치되어있어야할 파일들이 설치가 안되어 있는 경우 였다. Window - PackageManager 필요한 패키지를 다운 받으니 해당 오류가 사라졌다.. 무슨 이유인지 모르겠는데 로그인이 해제 되어있는 경우 때문에 이런 버그가 생긴거 같음;;; 한번씩 강제로 로그아웃되어있는 신기한 현상 다른 버그도 있어서 함께 올려봄... Eerro : The type or names.. 2022. 12. 22.
[유니티 Unity] 유니버설 렌더 파이프라인(URP) 프로젝트 변경하기 유니버설 렌더 파이프라인(URP) 프로젝트 변경하기 URP 패키지 다운 받기 기본적으로 맨처음에 프로젝트를 생성할 때 URP 모드로 만드는 방법도 있으나 기존의 프로젝트에서 URP로 변경하고 싶을 때 다음과 같은 방법으로 변경하면된다. Window-PackageManager 에 들어가서 PackageManager에서 Unity Registry에서 rp라고 검색하면 다음과 같이 Universal RP를 Install해준다. 프로젝트 업그레이드 시키기 Install하고 나면 프로젝트를 업그레이드 시켜주어야한다 프로젝트를 업그레이드 시키기 위해서는 [ Edite - Project Setting - Grapics ] 로 들어간다 Scriptable Render Pipeline Settings 가 비어있는 것을 .. 2022. 12. 13.
[유니티 Unity] InputField 모바일 패드 안보이게 하기 InputField 모바일 패드 안보이게 하기 버튼을 만들어서 해당 버튼을 눌렀을 때, InputField안에 해당 버튼안에 있는 글씨가 입력되는 것을 만드는데 Window형식에서는 상관없었으나 Android형식으로 변환해서 플레이 했을 때 InputField에 입력되면서 모바일 키패드가 자동으로 활성화 되어 플레이하는데 불편함이 있어서 키패드를 안보이게 해야하는 상황이 왔다 이럴 경우 InputField 인스펙터 창안에서 HideMoblie Input을 활성화 시켜주면 모바일에서도 키패드가 활성화 안되는 것을 알 수있다. 2022. 12. 13.
[유니티 Unity] 전략패턴[디자인 패턴(Strategy Pattern)]으로 코드 작성 하기 전략패턴이란? 게임을 제작할 때 , 무기에 따라서 캐릭터의 모션이나 사운드, 방식을 동시에 변경하는 게임을 만든다고 가정했을 때 전략패턴을 모를 경우에는 , 각 경우에 따라서 Switch 문을 이용해서 바꾸어 주는 방식으로 대부분 구현을 하는데 이런 방식은 작은 프로젝트에서는 사용하기 좋은 방식이나 스케일이 큰 프로젝트 안에서는 코드가 늘어나면서 실수로 빠지거나 작성하지 않아서 문제가 생기는 경우가 생길 수 있다. 출처 : https://www.youtube.com/watch?v=63miHKtooo4&ab_channel=%EC%98%A4%EB%8A%98%EC%BD%94%EB%94%A9 (예시) [스크립트] 공통으로 사용하는 부모 클래스 GunWeapon 더보기 using System.Collections.. 2022. 12. 12.
[유니티 Unity] 쉐이더(Shader), 유니티 쉐이더(Unity Shader) 보호되어 있는 글 입니다. 2022. 12. 9.
[유니티 Unity] 유니티에서 움직이는 이미지(.gif) 넣기 움직이는 이미지를 UI상에서 적용하기 위해서는 이미지를 스프라이트 시트로 만들어 주어야한다. 원래는 이미지 스프라이트를 애니메이션 클립으로 만들어서 루프 시키다가 너무 비효율적인거 같아서 방법을 찾다가 다음 방법으로 쉽게 만들 수 있어서 작성해보았다. 1. 움직이는 이미지 스프라이트 시트로 만들기 아래 사이트를 이용하면 움직이는 이미지를 스프라이트 형식으로 변형이 가능하다 https://ezgif.com/ Animated GIF editor and GIF maker Easy to use online animated GIF maker and image editor. Upload and edit GIF images for free. Create, crop, resize, reverse, optimize an.. 2022. 12. 8.
[유니티 Unity] 인스펙터(Inspector) 창 정리 하는 방법 정리 유니티 개발을 하다 보면 인스펙터 창이 정리가 안되거나 구분이 잘 되어 있지않아서 헷갈리는 경우가 생기게 된다. 이번에는 그럴 때 사용하는 인스펙터 간의 간격을 늘여주거나 하나의 그룹으로 만들어서 정리 하는 방법을 정리 하려고 한다. Header(타이틀 달기) 사용하는 방법은 다음과 같이 사용 하면된다. [Header("원하는 이름")] 을 작성하면 다음과 같이 어떠한 이유로 선언 되었는지 쉽게 확인 할 수 있도록 제목이 붙은 것을 확인 할 수 있다. Space(인스펙터 간의 간격 주기) Header를 사용하더라도 선언된 속성을 확인 하기 힘든데 스크립트 안에서 Enter로 간격을 준다고 해도 인스펙터 안에서는 Enter 유무에 관계없이 다닥다닥 붙어서 작성되기 때문이다 이럴때 Space 속성을 사용해서.. 2022. 12. 6.
[유니티 Unity] 에셋번들(AssetBundle) 사용하기 보호되어 있는 글 입니다. 2022. 11. 29.
[유니티 Unity] Vector3.Lerp 사용하여 오브젝트 이동시키기 1. Lerp 란? 시작점에서 도착지점까지 선형 보간법을 이용해서 이동하는 방법을 Lerp라고 한다 2. Lerp 사용하기 [ Vector3.Lerp(시작 위치, 목표 위치, 0~1 사이의 보간값)] Lerp안에 들어가는 매개변수를 살펴보자면 첫번째, 시작위치는 말그대로 오브젝트가 이동하는 위치의 값을 말한다 두번째,목표위치는 도달해야하는 위치를 말한다 3번째,보간값은 최종 좌표값으로 숫자가 1에 가까울 수록 빠른 속도로 오브젝트가 이동하고 0일 경우에는 오브젝트가 움직이지 않는다. 이런 Lerp는 특정 오브젝트를 목표 지점으로 움직이는데 많이 사용된다. transform.position = Vector3.Lerp(startPos, endPos, Time.deltaTime); 3. 특정 위치 까지 이동하.. 2022. 11. 25.
[유니티 Unity]오브젝트 이름 한번에 변경하는 스크립트 오브젝트의 종류가 많아 졌을 때 하나하나 이름 바꾸는게 귀찮아서 검색을 하다가 어떤 개발자 분이 만들어두신게 있어서 주워왔습니다^^ 스크립트를 넣어주고 빈오브젝트를 넣어서 적용하는 건 줄 알았는데 MonoBehaviour가 아니라서 컴포넌트 추가가 안되서 찾아보다가 EditorWindow 라서 컴포넌트에 추가가 안되는것을 발견했고 상단의 Tool 창에 ECNameing이 생긴것을 볼 수 있다 클릭하면 아래와 같은 창이 나온다 오브젝트 리스트안에 다음과 같이 이름을 변경할 오브젝트를 넣어주고 변경하기를 누르면 쉽게 이름이 바뀌는 것 까지 확인하였다 https://github.com/hahahohohun/PublicCode/blob/main/README.md#ecnamingcs using UnityEdito.. 2022. 11. 25.
[유니티 Unity] RenderTexture를 이용해서 UI에 영상 출력하기 1. Raw Image 생성하기 하이어라키 창안에 영상을 보여줄 UI - RawImage를 생성한다. 2. Render Texture 생성하기 랜더 텍스쳐를 생성하는 방법은 Assets프로젝트 파일에서 오른쪽 마우스를 클릭하면 Create - Render Texture를 선택하여 생성 할 수 있다. 랜더 텍스쳐는 런타임 시점에서 생성되고 업데이트 되는 특수한 타입의 텍스처이다. 렌더 텍스처를 사용하기 위해서는 카메라를 하나 지정해서 렌더링 해주어야한다. Render Texture안에 Size를 조절하여 영상을 원하는 사이즈로 바꾸어준다 기본 사이즈는 256*256으로 되어있음 3. Render Texture를 Raw Image적용하기 그리고 영상을 보줄 UI-Raw Imge안에 RenderTexture .. 2022. 11. 25.
[유니티 Unity] 모바일 화면 자동 꺼짐 방지 하기 일정 시간 동안 모바일 앱을 사용하지 않을 때, 화면 잠금 방지 팁 기본적으로 앱을 이용하지 않으면 화면의 밝기가 줄어들거나 일정시간이 지나면 꺼지도록 되어있다. 앱이 활성화 되어있을 경우에 이러한 절약모드가 되지 않게 하기 위해서 다음 코드를 Awake나 Start안에 넣어주면 화면 자동 꺼짐 설정에 관계없이 항상 켜져 있도록 할 수 있다. void Awake() { Screen.sleepTimeout = SleepTimeout.NeverSleep; } 2022. 11. 24.
[유니티 Unity] 클릭한 버튼(Button) 오브젝트 이름 가져오기 클릭한 버튼 오브젝트와 오브젝트 이름 가져오기 버튼을 클릭했을 때 , 해당 오브젝트의 이름에 따라서 동작하는 방법을 찾다가 클릭하는 오브젝트의 이름을 받아서 이름에 따라 조건을 주어서 이벤트를 발생하는 방법을 사용하게 되면서 다음과 같이 EventSystem.current.currentSelectedGameObject 를 사용해주었다. using UnityEngine.EventSystems; public class Button : MonoBehaviour { // 버튼 이름 가져오기 public void GetButtonName() { string EventButtonName = EventSystem.current.currentSelectedGameObject.name; } // 버튼 오브젝트 가져오기 .. 2022. 11. 24.
[유니티 Unity] 깃허브(github)에 유니티 프로젝트 올리기 유니티 프로젝트를 관리하는 방법은 여러가지가 있으나 깃허브를 이용하여 유니티의 프로젝트를 관리하는 방법을 작성 해보려고 한다. 1. 깃허브 가입하기 다음 깃허브 사이트에 들어가서 깃허브(github) 아이디를 생성해주어야한다 https://github.com/ GitHub: Let’s build from here GitHub is where over 94 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat... github.com 가입이 끝나고 깃허.. 2022. 11. 23.
[유니티 Unity] 비디오 영상 끝나는 시간 찾기 [Header("Video")] public VideoPlayer ExplainVideo_vp; public RenderTexture ExplainRTexture; public void ExplainVideoFinishTime() { StartCoroutine(_ExplainVideoFinishTime()); } IEnumerator _ExplainVideoFinishTime() { while (true) { long playerCurrentFrame = ExplainVideo_vp.GetComponent().frame; long playerFrameCount = Convert.ToInt64(ExplainVideo_vp.GetComponent().frameCount); if (playerCurrentFr.. 2022. 10. 18.
[유니티 Unity] 가상 키보드 만들기 보호되어 있는 글 입니다. 2022. 9. 26.
[유니티 Unity] Dontdestory.onLoad 오브젝트 한번만 만들어지게 만들기 Dontdestory.onLoad 된 오브젝트 중복생성 막기 기본적으로 씬(Scene)을 전환했을때 현재 씬(Scene)에 있던 게임 오브젝트는 사라지고 전환 된 씬(Scene) 안에서 앞에서 사용했던 오브젝트를 찾을 수 없다. 이전에 사용하던 오브젝트를 씬(Scene)을 사라지게 하지 않고 그대로 가져오기 위해서 다음과 같이 Dontdestory.onLoad()를 오브젝트에 적용해주면 이전에 사용했던 오브젝트의 정보를 그대로 가지고 와서 다음 씬에서 사용이 가능하다. public void Awake() { DontDestroyOnLoad(gameObject); } 이렇게 지워지지 않게 했을 경우, 다시 기존의 씬(Scene)으로 돌아오게 되면 해당 오브젝트가 지워지지 않고 새로 생성되는 것을 확인 할 .. 2022. 8. 4.
[유니티 Unity] 리스트안의 bool의 갯수, 체크 하기 리스트안의 bool의 갯수, 체크 하기 어쩌다가 Update안에서 5개의 bool값 중에 true인 것의 갯수를 받아야하는 난관을 겪게되는데 그 때 사용했던 방법을 작성해볼까 합니다. 문제가 뭐였냐면,,,, 트루가 됬을때 갯수를 +1해주는게 업데이트 안에 들어가닌까 값이 계속 추가되는 것이였는데 내가 원하는 것은 5개의 bool 에서 1개가 트루이면 1개라는 걸 알아야하는 문제였습니다. 다음과 같이 4개의 버튼을 주고 버튼을 눌리면 true로 변하고 다시 누르면 fasle로 변하는 버튼 함수를 넣어주고 업데이트에서 계속 bool이 true인 갯수를 확인 할 수 있도록 현재bool의 갯수 텍스트를 넣어줬습니다. bool +=1이렇게 하면 계속 true가 되면 계속 bool의 합계가 올라가겠지만 int Te.. 2022. 7. 20.
[유니티 Unity] 텍스트메시프로(TextMeshPro) 사용시, 한글 깨짐 현상 대처 방법 텍스트메시프로(TextMeshPro) 사용시, 한글 깨짐 현상 대처 방법 텍스트 매쉬 프로를 사용하다 보면 한글을 입력해야 하는 경우가 반드시 오게되는데 그냥 TMP에 한글을 입력하면 다음과 같이 요렇게 한글이 나오는 것을 확인 할 수 있습니다. 이럴 경우에는 Window - TextMeshPro- Font AssetCreater 창을 열어줍니다. 일단 원하는 폰트를 하나 다운 받아줍니다. 그리고 SourceFontFile에 사용할 폰트를 넣어주고 Character Set -> ASCII Render Mode -> SDF 로 설정하고 GenerateFontAtlas를 눌러주면 위와 같이 폰트가 만들어진 것을 확인 할 수 있습니다. 그리고 만들어진 텍스트를 넣어도 바뀐게 없는 것을 보실수있습니다! 이담음 .. 2022. 7. 20.
[유니티 Unity] 부모, 자식 오브젝트 접근하는 방법과 자식 갯수 구하기 개발을 하다 보면 해당 Gameobject를 포함하고 있는 하위(자식) object들이나 상위(부모) object를 알아야하거나 가져와야하는 경우가 많다. 해당 접근 방법을 어떻게 사용하냐에 따라서 다양한 방법으로 오브젝트에 접근하는 방법이 있다. 1. 상위(부모) 오브젝트 접근하기 transform.parent는 해당 스크립트를 가진 오브젝트의 바로 위에있는 부모를 가져온다. //현재 오브젝트의 부모 찾기 public class x : MonoBehaviour{ GameObject parent = null; void Start() { gameobject = transform.parent.gamObject; //해당 오브젝트 부모의 오브젝트 gameobject = transform.GetComponent.. 2022. 7. 17.
[유니티 Unity] 버튼을 이용한 웹사이트(URL) 연결하기 버튼을 이용한 웹사이트(URL) 연결하기 버튼을 클릭 했을 때 해당 사이트가 원하는 사이트가 열리는 코드를 짜보려고 합니다. 일단 새프로젝트를 만들어주시고 버튼을 하나 만들어 줍니다. 대에추웅 이렇게 ~ 넣어주고 원하는 이름의 스크립트를 하나 만들어주세요! 저는 [SiteManager]라고 이름 지었습니다 😁😁 그리고 원하는 오브젝트 안에 [SiteManager] 를 넣어주세요! 버튼에 이벤트를 넣기 위해서 [SiteManager]에 다음 코드를 작성해 줍니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class SiteManager : MonoBehaviour { public void OnC.. 2022. 7. 17.
[유니티 Unity] 유니티 안에서 웹캠(WebCamTexture) 화면 띄우는 방법 유니티 안에서 웹캠(WebCamTexture) 화면 띄우는 방법 유니티 화면에서 카메라를 띄우는 방법은 매우 간단합니다. https://docs.unity3d.com/kr/530/ScriptReference/WebCamTexture.html UnityEngine.WebCamTexture - Unity 스크립팅 API WebCam Textures are textures onto which the live video input is rendered. docs.unity3d.com GetComponent - RawImge 오브젝트를 하나 만들어주고 유니티 엔진에서 제공하는 WebCamTexture 를 사용해줍니다 WebCamTexture는 라이브 비디오 입력을 렌더링하는 텍스쳐로 카메라를 그려주기 위해서 사용.. 2022. 7. 17.
[유니티 Unity] 리스트안에 있는 데이터 랜덤으로 섞기 List Shuffle(리스트 랜덤으로 순서 변경) 하기 리스트의 순서를 랜덤으로 변경하는 코드이다. 데이터를 개수만큼 생성 이후에 랜덤으로 순서를 변경한다. 기본적으로 Swap의 코드로 구성되어있다. Genergeneric type으로 선언해서 List의 어떤 형태든 가능하도록 했다. public List GetShuffleList(List _list){ for (int i = _list.Count - 1; i > 0; i--) { int rnd = UnityEngine.Random.Range(0, i); T temp = _list[i]; _list[i] = _list[rnd]; _list[rnd] = temp; } return _list; } public List str_list; GetShuffle.. 2022. 6. 6.
[유니티 Unity] CSV를 이용해서 엑셀 파일을 불러오자 CSV를 이용해서 엑셀 파일을 불러오자 불러올 데이터 엑셀 파일을 저장해서 [Assets > Resources ] 폴더 안에 넣어준다. 이제 엑셀 데이터 파일을 분석해서 원하는 형태로 다시 만들어주기 위해서 다음 코드를 이용해서 파싱을 해준다. 1. CSV파일을 불러오기 1) 내부에서 파일 불러오기 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.Text.RegularExpressions; using System.IO; public class CSVReader : MonoBehaviour { static string SPLIT_RE = @","; static str.. 2022. 6. 5.
[유니티 Unity] 유니티 이벤트(Unity Event) 이해하기 이벤트(Event)란 무엇인가? Events는 이벤트를 '발생 시키는 쪽'과 이벤트에 대해 '반응하는 쪽'으로 되어 있다. 예를들어서 한개의 채널이 있을 경우 이 채널에 존재하는 구독자들이 있다고 생각했을 때, 채널 주인이 글을 올렸을 때 구독자들에게는 채널장(이벤트 게재자)이 글을 올렸다고 알림이 가는 것 처럼 알려주는 것을 이벤트라고 생각하면 된다. 이벤트 게재자(Publisher)가 글을 올렸는데 구독이 되어있어어지 게시글을 확인 할 수 있다면 구독자(Subscribers)가 없을 경우 글에 대한 반응(처리)를 할 수 없을 것이다. 그리고 게재자와 구독자가 1명이라도 있을 경우 Publisher가 글을 올렸을 때 Subscriber 에게 게재가가 글을 올렸다는 알림을 보내주는 과정(처리)를 [이벤트.. 2022. 6. 5.
[유니티 Unity] 코루틴(Coroutine) 작성 & Return 종류 정리 유니티에서 특정 코드를 반복적으로 실행하기 위해서 Update문에 코드를 작성하여 반복적으로 불러오기 위해서 사용한다. 코루틴도 Update와 마찬가지로 특정 코드를 반복적으로 실행하기 위해서 사용하는데 코루틴과 Update의 차이점은 Update에 작성된 코드는 매 프레임마다 계속 반복적으로 실행되어 효율적이지 않을 수 있다. 그런 경우 코루틴을 사용해서 자신이 필요한 순간에만 반복하고 필요하지 않은 경우에는 멈출 수 있는 코루틴을 효과적으로 많이 사용한다. 코루틴을 사용하기 위해서는 IEnumerator 라는 반환형을 사용해 주어야하고 마지막에는 yield return 반환 값을 작성해 주어야 합니다. * yield return을 넣어주지 않으면 코드상에 에러가 발생하는 것을 확인 할 수있습니다. *.. 2022. 6. 2.
728x90
반응형