본문 바로가기

전체 글42

[Git] Git 필수 명령어 모음 Git 버전 확인 : git --version 경로 변경 : cd [경로] Git 초기화 : git init Git 설정 보기 : git config --list Git 사용자 이름 설정 : git config --global user.name "[사용자 이름]" Git 사용자 이메일 설정 : git config --global user.email "[사용자 이메일]" Git 파일 추가 : git add [추가할 파일 및 폴더] Git 파일 추가 확인 : git status Git 커밋 : git commit -m "[커밋명]" Git 커밋 확인 : git log Git 브랜치 변경 : git branch -M [브랜치명] Git 원격 저장소 지정 : git remote add origin [HTML] .. 2022. 12. 16.
[Unity] 자식 오브젝트와 함께 Color Tint를 적용하는 버튼 본 글에서는 버튼의 Color Tint가 하위 오브젝트에도 적용될 수 있도록 하는 스크립트를 알아본다. 이 스크립트는 가장 아래에 배치되어 있다. Canvas에 Button을 생성하고, Highlighted Color와 Pressed Color의 알파 값을 어느 정도 낮추어 준다. 이는 마우스 오버나 클릭이 발생했을 때 불투명도를 낮춰주기 위함이다. 이번에는 Canvas에 Button을 생성한 후, Button 컴포넌트를 MultipleColorTintButton 컴포넌트로 대체한다. 또한, Button과 동일하게 Highlighted Color와 Pressed Color의 알파 값을 어느 정도 낮추어 준다. Hierarchy는 이러하다. ▼ 결과.gif using UnityEngine; using Un.. 2022. 12. 12.
[Blender] 블렌더 필수 단축키 확대/축소 : 휠 축 회전 : 휠 드래그 전체 선택 : A Object Mode → Edit Mode : Mesh 선택 후 Tab Shading 변경 : Z Mesh 병합 : Ctrl + J 링크 선택 : Ctrl + L 정투영 회전 : Alt + 휠 드래그 부모 관계 해제 : Alt + P X-Ray 모드 활성화/비활성화 : Alt + Z 계층 확대 : 텐키 + 계층 축소 : 텐키 - 오브젝트 숨기기: H 오브젝트 숨기기 해제: Alt + H 2022. 6. 19.
[Unity] 최적화 기법 최적화 기법 - 움직이지 않는 정적 오브젝트에 Static Batching 적용 - Texture : Generate Mip maps 체크, Use Crunch Compression 체크 - 머터리얼의 Enable GPU Instancing 체크 - Oculusion Culling 기법 (x) - Project Settings, Lighting Settings - Input.GetTouch 와 Input.touchCount 대신 Input.touches 사용하기 - ref 키워드 사용 - Resolution and Presentation의 Use-32bit Display Buffer 비활성화 - Other Settings의 Enable Internal Profiler 비활성화 - 오브젝트를 하나로 묶고,.. 2021. 9. 14.
[Unity] 3ds Max로 오브젝트 병합하기 Unity 개발을 하다 보면, 개발자들이 고난을 겪는 작업은 최적화 작업일 것이다. 특히, 모바일 기기는 최적화가 제대로 이루어지지 않으면 흔히 프레임 드롭, 발열과 같은 문제가 발생한다. 최적화는 Sprite Atlas, TMP, Light Map, Scripting, Low Poly, Batching 등 많은 부분에서 이루어진다. 이러한 최적화가 이루어지면 메모리를 절약할 수 있고, 드로우 콜이나 연산 처리가 신속해진다. 이 포스트에서는 드로우 콜을 줄이는 방법 중 하나에 대해 다루려 한다. 드로우 콜은 CPU가 GPU에게 오브젝트를 그리라고 요청하는 횟수를 의미한다. 쉽게 말해 오브젝트 개수가 많고, 머터리얼의 개수가 많으면 느려진다는 것이다. 만약, 여러 오브젝트와 머터리얼이 하나로 병합된다면 드.. 2021. 6. 22.
[Unity] MySQL-PHP 연동 Unity (LoadPHP.cs) using UnityEngine; using UnityEngine.Networking; using System.Collections; public class LoadPHP : MonoBehaviour { private void Start() { StartCoroutine(GetMySQLData()); } private IEnumerator GetMySQLData() { string serverPath = "http://자신의 도메인 주소.com/LoadMySQL.php"; //PHP 파일의 위치를 저장 WWWForm form = new WWWForm(); //Post 방식으로 넘겨줄 데이터(AddField로 넘겨줄 수 있음) using (UnityWebRequest we.. 2021. 5. 21.
[Unity] 해상도에 따른 화면 비율 고정하기 이 글에서는 사용자가 원하는 해상도의 비율로 스크린의 화면이 고정되게끔 해보겠다. 글로만 설명하면 이해하기 어려우니 이번에 이루고자 하는 결과에 대해 그림을 그려보았다. 보다시피 사용자가 원하는 해상도의 비율이 16:9라고 가정했을 때, 세로가 긴 4:3 비율이나, 가로가 긴 2:1 비율에도 항상 16:9 비율을 유지할 수 있게끔 하는 것이 목표이다. 물론, 남는 여백은 검정 바탕이다. ① SetResolution 함수 제대로 사용하기 해상도 관련해서 구글링을 하다 보면, 게임의 해상도를 변경할 수 있는 Screen.SetResolution 함수를 많이 봤을 것이다. 예로, Screen.SetResolution(1920, 1080, true); 를 입력하면 1920x1080 해상도를 전체화면으로 적용하겠.. 2021. 1. 28.
[Unity] 에셋 번들(Asset Bundle) 빌드, 로드 스크립트 매번 서버에서 번들을 다운받을 경우 문제가 되므로, 번들이 로컬에 존재하지 않을 경우에는 서버로부터 다운받는 스크립트를 예시로 작성해보았다. 응용하면 좋을 것 같다. 참고로, 어느 정도 에셋 번들에 대한 개념이 잡혀있으면 보기 편할 것이다. ① 번들 빌드 스크립트 using System.IO; using UnityEditor; using UnityEngine; public class BuildBundle : MonoBehaviour { #if UNITY_EDITOR [MenuItem("AssetBundle/BuildBundles")] //메뉴로써 제작 /* 번들 제작하는 함수 */ public static void BuildBundles() { string assetBundleDirectory = "As.. 2020. 9. 14.
[Unity] Vuforia를 통해 AR 체험하기 (3) - 마커에서 마커로 물체 이동 저번 게시글에 이어서 다중 마커를 응용한 Marker to Marker를 구현해보겠다. 저번 게시물에 이어서 구현을 수행한다. Hierarchy에 Create Empty 하여 새로운 오브젝트를 추가해준다. (이름은 Controller라고 지어주었음) 새로운 스크립트를 생성해주고, Controller 오브젝트에 Add Component 해준다. 다음과 같이 스크립트를 작성한다. (각 함수는 bool 타입 변수에 마커의 인식 여부를 변경한다.) Marker 오브젝트에 있는 Default Trackable Event Handler 컴포넌트에 On Target Found()를 추가해준다. (마커를 인식했을 때 실행될 함수들을 지정하는 공간) Controller 오브젝트를 드래그 앤 드롭 해주고, 함수를 Mark.. 2020. 7. 5.
[Unity] Vuforia를 통해 AR 체험하기 (2) - 다중 마커 지난 게시글에서는 Vuforia를 이용한 AR 환경 세팅에 대해서 알아보았다. 이번에는 한 개의 마커가 아닌 여러 개의 마커를 생성하여, 게임 오브젝트가 각각 생성될 수 있도록 해본다. 매우 간단하다. 프로젝트 파일은 지난 게시물에 이어서 진행한다. ARCamera 게임 오브젝트에서 'Open Vuforia Engine configuration'을 클릭한다. Camera Devide Mode를 MODE_DEFAULT로 변경하고, Max Simultaneous Tracked Images를 마커의 개수만큼 지정한다. (이번 게시물에서는 두 개만 할 예정이나 넉넉하게 네 개 지정함.) Vuforia 사이트에서 'Add Target' 버튼을 클릭한다. 이전 게시물과 동일하게 Single Image 선택 후, 파.. 2020. 7. 1.
[Unity] Vuforia를 통해 AR 체험하기 (1) - 환경 세팅 이번에는 퀄컴에서 제작한 AR 소프트웨어 플랫폼인 Vuforia를 사용하여 AR기술을 체험해보겠다. 이번 시간에는 간단히 AR 세팅을 해본다. 본 게시물에서는 Unity 2019.4.0f1 버전을 사용했으며 'Android Build Support' 모듈을 추가한 상태이다. 새로운 프로젝트를 생성해준다. (본인은 'AR_Test'로 이름 지정 후 생성) File → Build Settings 에서 Android로 'Switch Platform' 해준다. Player Settings → Player → XR Settings의 'ARCore Supported'에 체크해준다. Asset Store에서 'Vuforia Core Sample' 에셋을 다운받는다. 전부 Import 해준다. 기존에 있는 GameOb.. 2020. 7. 1.
[Unity] Samsung Gear VR 전용 빌드 설정 방법 안드로이드 VR 버전으로 빌드하기 1. Andoid 플랫폼으로 변경 2. https://dashboard.oculus.com/tools/osig-generator/ 에서 휴대전화의 시리얼 번호로 시그니처 파일 만들기 2-1. Assets/Plugins/Android/assets/ 경로에 시그니처 파일 넣기 3. Build Settings에서 Texture Compression을 ETC2 (GLES 3.0)으로 변경 4. Project Settings → Player → XR Settings에서 Virtual Reality Supported 체크 4-1. Oculus 추가하기 4-2. Other Settings의 Graphics APIs에서 Vulkan 제거하기 (모바일 미지원이므로 에러 발생) 컨트롤러 .. 2020. 6. 16.
[Unity] 읽기 전용 폴더와 하위 파일들을 모두 삭제하기 하위에 있는 읽기 전용 폴더나 파일을 전부 삭제할 수 있는 함수이다. private void DeleteDirectory(string _folderPath) { File.SetAttributes(_folderPath, FileAttributes.Normal); //폴더 읽기 전용 해제 foreach (string _folder in Directory.GetDirectories(_folderPath)) //폴더 탐색 { DeleteDirectory(_folder); //재귀 호출 } foreach (string _file in Directory.GetFiles(_folderPath)) //파일 탐색 { File.SetAttributes(_file, FileAttributes.Normal); //파일 읽기 .. 2020. 5. 3.
[Unity] Camera를 사용하여 World Canvas에 이벤트 전달하기 VR 콘텐츠를 재생할 때, HMD를 착용하고 조이스틱에서 나오는 레이저 포인터를 사용하여 UI를 조작한다. 이 레이저 포인터를 구현하기 위해 학습한 기법을 소개하고자 한다. 본래 Canvas는 마우스 커서로 이벤트(클릭, 호버링 등)를 전달받을 수 있다. 그러나 마우스가 아닌 다른 방법으로 Canvas에 이벤트를 전달해본 경험은 드물 것이다. 이 기법을 활용하기 위해서는 이벤트 발생 방법에 대한 대략적인 이해가 필요하다. 카메라 상의 마우스의 좌표는 PointerEventData가 담고, 이 좌표로부터 GraphicRaycaster가 발생한다. GraphicRaycaster가 UI와 충돌하면, 충돌한 UI는 BaseInputModule 클래스에 있는 함수들로 이벤트를 전달받는다. 캔버스와 GraphicR.. 2020. 2. 10.
[Unity] 특정 Camera의 화면을 녹화 저장하기 프로젝트를 진행하면서 특정 Camera에서 촬영되는 화면을 파일로 저장할 필요가 있었다. 고맙게도 Asset Store에 Unity Recorder라는 에셋이 있어서 원하는 작업을 진행할 수 있었다. 현재는 Package Manager에서 Unity Recorder를 내려받을 수 있다. 일단, 실험을 위해 Cube와 두 개의 Capsule을 Plane위에 올려두었다. Cube는 스크립트를 적용하여, 상하좌우로 5초 간격으로 움직이므로 Capsule들이 움직이는 것처럼 보이게 된다. 더보기 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Cube : MonoBehaviour { private.. 2020. 1. 29.
[Unity] UI 오브젝트에 마우스가 올려져있는지 확인하기 using UnityEngine; using UnityEngine.EventSystems; //지시문 추가 public class Test : MonoBehaviour { void Update() { Debug.Log(EventSystem.current.IsPointerOverGameObject()); //UI 상에 마우스 올려져있으면 True, 아니면 False } } 2020. 1. 13.
[Unity] SteamVR 연동하기 1. 스팀에서 SteamVR과 Windows Mixed Reality 설치 2. Asset Store에서 'Steam VR Plugin' 플러그인 다운로드 3. 플랫폼을 'Universal Windows Platform' 으로 변경 4. Project → Player → Virtual Reality Supported 체크 5. Windows Mixed Reality 추가하기 6. Steam 전용 'openvr_api.dll' 플러그인을 Assets/Plugins 폴더에 삽입 (폴더 없으면 생성) 7. 'Steam VR Input' 설정을 통해 조이스틱 바인딩(Steam이 실행되어 있어야 한다) 1) 바인딩된 액션 불러오는 변수 예) public SteamVR_Action_Vector2 LeftJoysti.. 2020. 1. 8.