목록분류 전체보기 (12)
대마법사의 개발 블로그랄까?

유니티에서 멀티게임을 구현하는 방법중 하나인 Photon PUN2 를 이용해 구현을 해보겠다. 세팅하기우선은 에셋스토어에서 PUN 2- Free를 임포트 해준다.https://assetstore.unity.com/packages/tools/network/pun-2-free-119922 PUN 2 - FREE | 네트워크 | Unity Asset StoreGet the PUN 2 - FREE package from Photon Engine and speed up your game development process. Find this & other 네트워크 options on the Unity Asset Store.assetstore.unity.com 1. 다운을 받는동안 Photon 회원가입을 한다.2..
UI PositionTooltipWorld Space public void OnPointerEnter(PointerEventData eventData) { Debug.Log("IPointer Enter"); Vector2 localPoint; RectTransformUtility.ScreenPointToLocalPointInRectangle(rt, Input.mousePosition, eventData.pressEventCamera, out localPoint); rt.position = eventData.pointerCurrentRaycast.worldPosition; if (activeAnimation) Animation(); else ..
Coroutine우선 코루틴은 멀티스레드가 아닌 메인스레드 작업이다.yield Retrun 통해 주도권을 번갈아 가며 사용하는 방식이다.Await / AsyncAwait Async 즉 비동기처리이다.private async void Start(){ await Test();}private async void Test(){ await Task.Run(()=>{// RUN으로 감싸인 부분만 비동기 처리 while(true) { //DoSomething ... } }); //비동기 처리 완료후 이후 라인 수행 //UNITY API 접근 가능}Async Await 을 통해서는 Unity API에 직접적으로 접근할 수 없다.ex) ..
오늘의 노래 : https://www.youtube.com/watch?v=oRg-7iku6OkDefaultDefault 연산자는 특정 데이터 형식의 기본값을 제공한다.값형식, 참조형식 모두 사용가능하다.internal class Class2{ private List list; static void Main(string[] args) { int a = 10; string? b = "Test"; a = default; b = default; Console.WriteLine("a Default = " + a); Console.WriteLine("B Default = " + b); }}결과a Default = 0B ..
Orthograpic Camera$$Orthgrapic Size =Height / (2*PPU)$$2560*1440 모니터 2개Canvas의 해상도 5120*1440Camera Size = 720 =1440/(2*1)Display캔버스는 하나의 카메라에만 보일수 있다 (월드 캔버스 제외)본인이 구현해야하는것모니터 두개에 하나의 소프트웨어가 보여야한다.각각의 디스플레이는 오브젝트를 공유를 할수 있어야한다(실제 듀얼모니터처럼 UI오브젝트가 화면 1에서 화면 2로 옮길수 있어야함)해결방법World Canvas를 두개의 모니터를 합친 해상도로 생성해준다.Camera를 Ortho로 설정하고 해상도에 맞게 Size를 조절해준다.카메라 두개를 각각 캔버스의 좌/우를 비추도록 설정한다.카메라의 Display를 1,2로..

문제타일맵을 그리던중 바닥 타일 콜라이더를 생성하려고 했더니...이 사단이 남 ㅋㅋㅋㅋSprite를 걍 다 콜라이더로 만들어버림해결방안자 해결 방안은 바로!!!!TileMap을 생성하면서 생긴 TileSet의 Collider 세팅을 해주는것이다.자 TileMap을 생성하였다면 아래와같은 TileSet들이 생성되었을것이다.콜라이더 생성을 원치않는 부분을 선택한다.해당 타일들을 inspector를 통해 Collider Type 을 None으로 설정해준다.그러면 해결!!(아래 사진은 작성자가 테두리 타일을 중간위치에도 사용해서 중간에도 콜라이더가 생성되었다...)꿀팁혹시 당신이 수많은 Tile Set들중에 테두리에 사용된 Tile을 찾기가 힘들다면1. TileMap 선택 상태에서 원하는 Tile을 선택하고2...

VrChat 맵개발을 한창 배우는 중이다.(왁굳형을 위해..)이세계 아이돌 3주년 기념 방탈출 맵을 제작 중인데 특정 상호작용을 하면 동영상을 재생하는 기능이 필요했다.먼저 결과부터 보고 드가자Vrchat 공식 DocsVrChat에서 동영상을 재생하는 방법은 여러가지있는것으로 보인다.VideoTXLProTVUSharpVideoVideo Player 설치본인은 3번 USharpVideo를 사용하였다.USharpVideo 깃허브위의 링크를 통해 패키지를 설치할수 있다.패키지를 설치하면 아래의 경로에서 Prefab을 확인 할수 있다.사실 간단한 비디오 플레이어만을 사용할것이면 그냥 프리팹만 가져다가 쓰면된다.Inspector대충 보면GeneralAllow Seeking : 비디오 프로그래스바 조작 권한?Def..
문제발생List인 originPatrolPoint값을 복사하여 모두 선회하면 다시 List를 초기화 해줘 반복적으로 순찰 포인트를 돌게 하려고 했었다. 그런데 자꾸 오류남;;;[SerializeField] private List originPatrolPoint;private List patrolPoint; private Transform GetRandomPoint() { if (patrolPoint.Count == 0) {//포인트를 다돌면 리셋하여 반복 patrolPoint = originPatrolPoint;//요기! } int index = UnityEngine.Random.Range(0, patrolPoint.Coun..
C#은 제네릭이라는 아주 유용한 기능이 있다.보통 List나 Dictionary에서 많이 접해봤을 것이다. 제네릭의 활용도컬렉션델리게이트비동기 코드 Task제네릭이 될 수 없는 것필드(filed)속성(property)인덱서(indexer)생성자(constructor)이벤트(event)종료자(finalizer)Type Parameter : 타입 매개변수 Arity : 타입 매개변수의 개수 `Arity` 가 다르면 오버로드가 가능하다.타입 매개변수의 이름 변경만으로 오버로드 되지않는다.Arity가 2인 경우 타입 매개변수의 이름은 서로 달라야 한다. private void List Test(){}//T is Type parameterprivate void List Test(){}private void Li..

오늘은 시계 애니메이션을 만들어볼끄다간단하다 회전 키프레임만 찍으면 된다.자 우선 모델을 준비한다.자 알아서들 준비하시고당연하게도 시계의 분침, 초침, 본체는 따로따로 구분되어있어야한다.유니티에서 애니메이션을 만들기 위해서 필요한 것은 두가지가 있다.1.Animation Controller아래의 Animation들을 제어할 수 있는 컴포넌트라고 생각하면된다.2. Animation (*.anim)님들이 녹화하게될 Animation 파일이다.자 그럼 Animation Controller부터 만들어보자1. Project View의 빈곳에다가 마우스 우클릭을 통하여 Create/ Animation Controller를 클릭하여 생성하자!그럼 요런 아이콘의 파일이 생길 것이다. 더블클릭 !이상한 그래프 View가..