본문 바로가기

Study114

[Unity] Unity Render Streaming(유니티 스트리밍) 유니티의 화면을 외부에 스트리밍 하는 방법 1. PakageManager에서 좌측 상단의 + 버튼을 누르고 Add package by name을 누른 뒤 아래의 문자를 입력 후 Add 클릭 com.unity.renderstreaming 2. 다운받은 뒤 뜨는 Render Streaming Wizard에서 Fix All 클릭 3. 같은 창 하단의 WebApp에서 첫번째 버튼을 클릭하여 web app 다운 4. 다운받은 실행파일 실행 5. 실행 후 가장 하단의 경로를 인터넷 주소창에 복사하여 진입 http://127.0.0.1:80 6. Receiver Sample 클릭 7. 유니티로 다시 돌아와서 다운받은 Unity Render Streaming 패키지의 샘플을 프로젝트에 임포트 8. 외부로 스트리밍하고 .. 2024. 4. 18.
[Gstreamer] Gstreamer 기본 튜토리얼 4 : 시간 관리 전체 소스코드 #include #ifdef __APPLE__ #include #endif /* Structure to contain all our information, so we can pass it around */ typedef struct _CustomData { GstElement *playbin; /* Our one and only element */ gboolean playing; /* Are we in the PLAYING state? */ gboolean terminate; /* Should we terminate execution? */ gboolean seek_enabled; /* Is seeking enabled for this media? */ gboolean seek_done; .. 2024. 3. 25.
[Gstreamer] Gstreamer 기본 튜토리얼 3 전체 소스코드 #include #ifdef __APPLE__ #include #endif /* Structure to contain all our information, so we can pass it to callbacks */ typedef struct _CustomData { GstElement *pipeline; GstElement *source; GstElement *convert; GstElement *resample; GstElement *sink; } CustomData; /* Handler for the pad-added signal */ static void pad_added_handler (GstElement * src, GstPad * pad, CustomData * data); i.. 2024. 3. 22.
[Gstreamer] Gstreamer 기본 튜토리얼 2 전체 소스코드 #include #ifdef __APPLE__ #include #endif int tutorial_main (int argc, char *argv[]) { GstElement *pipeline, *source, *sink; GstBus *bus; GstMessage *msg; GstStateChangeReturn ret; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Create the elements */ source = gst_element_factory_make ("videotestsrc", "source"); sink = gst_element_factory_make ("autovideosink", "sink"); /* Create .. 2024. 3. 21.
[Gstreamer] Gstreamer 기본 튜토리얼 1 전체 소스코드 #include #ifdef __APPLE__ #include #endif int tutorial_main (int argc, char *argv[]) { GstElement *pipeline; GstBus *bus; GstMessage *msg; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Build the pipeline */ pipeline = gst_parse_launch ("playbin uri=https://gstreamer.freedesktop.org/data/media/sintel_trailer-480p.webm", NULL); /* Start playing */ gst_element_set_state (pipeline, .. 2024. 3. 19.
[Gstreamer] Gstreamer 튜토리얼 준비 1. Gstreamer 설치 2. 코드 다운 subprojects/gst-docs · main · GStreamer / gstreamer · GitLab GStreamer multimedia framework gitlab.freedesktop.org 3. 압축해제 후 솔루션 파일 찾기 - gstreamer-main-subprojects-gst-docs > subprojects > gst-docs > examples > tutorials > vs2010 > tutorials.sln파일 실행 4. 속성관리자 설정 - visual studio 파일 실행 이후 vs 안에서 설정 보기 > 다른 창 > 속성관리자 > 파일목록 전체 선택 > 마우스 오른쪽버튼 클릭 > 기존 속성 시트 추가 선택 5. 기존 gstrea.. 2024. 3. 19.
[Unity] ReadOnly 인스펙터 - 읽기전용으로 인스펙터에 보일 수 있게 만들어주는 Attribute 생성 코드 - 변수 앞에 [ReadOnly]를 붙여 사용가능(단, public 이거나 Serialized Field 를 이용해 인스펙터 상에서 보여야 함.) - [ReadOnly(false)] 또는 [ReadOnly]는 모든 경우에 읽기전용 - [ReadOnly(true)] 는 런타임 중에만 읽기전용으로 변경 #region ReadOnly 인스펙터 생성이 가능하도록 함. #if UNITY_EDITOR namespace UnityEditor { [CustomPropertyDrawer(typeof(ReadOnlyAttribute), true)] public class ReadOnlyAttributeDrawer : PropertyDrawer.. 2024. 3. 4.
[Unity] 유니티 - UI 자동 바인딩 구현(Reflection 이용, enum) 인프런 루키스님의 강좌를 참고했습니다. - 드래그 앤 드롭을 매번 해주는 것을 대체하기 위해서 구현했다. - dictionary에 사용할 오브젝트를 담고, 드래그 앤 드롭 대신 enum을 이용했다. - enum의 원소이름은 사용할 오브젝트의 실제 이름과 동일해야 한다. // UI_Base using System; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class UI_Base : MonoBehaviour { // 컴포넌트 타입별 오브젝트들을 담아 관리할 딕셔너리 // Key : enum 이름, Value : 오브젝트 배열 Dictionary dict = new Dictiona.. 2024. 2. 4.
[Unity][C#] 인터페이스(Interface) 인터페이스란? - 외부와 통신하는 공개 통로, 통로의 규격 - 통로의 규격은 강제하지만, 내부에서 어떤 일이 일어날지를 결정하지는 않음. 인터페이스의 특징 - 관례적으로 이름 앞에 I를 붙여 선언 - 인터페이스를 상속하는 클래스는 해당 인터페이스의 메서드를 반드시 구현해야함. - 인터페이스를 상속하는 클래스는 해당 인터페이스의 메서드를 반드시 public으로 선언해야함. - 세부적인 타입과 구체적인 구현을 따지지 않고 동작 - 느슨한 커플링(Loose Coupling) : 어떤 코드가 특정 클래스의 구현에 결합되지 않아 유연하게 변경 가능한 상태 예시 public interface IItem { void Use(GameObject target); } public class HpPotion : MonoBe.. 2024. 2. 1.
[Unity] 싱글톤 - Managers(매니저 관리 담당 매니저) using UnityEngine; public class Managers : MonoBehaviour { #region 싱글톤 static Managers _instance = null; public static Managers Instance { get { Init(); return _instance; } } static void Init() { if (_instance == null) { // @Manager 라는 이름의 게임 오브젝트를 찾음 GameObject mgr = GameObject.Find("@Managers"); // 해당 게임 오브젝트를 찾지 못한 경우 -> 새로 생성 if (mgr == null) { Debug.Log("매니저 새로 생성"); // 게임 오브젝트 생성 mgr = Ins.. 2024. 1. 29.
[Unity] NavMesh 동적 베이킹(feat. Static 체크박스) 게임 실행 중 NavMesh의 Map을 변경해야 될 일이 생겨서 NavMesh 동적 베이크에 대해 알아보았다. 기본적으로 unity 22버전 이후에는 NavMesh 전용 패키지가 생겨 해당 패키지를 다운받아 사용하면 이전 버전에서 깃허브에서 다운받아 사용하던 고급 NavMesh가 기본적으로 내장이 되었다. 아래와 같이 컴포넌트를 설정하고, 스크립트를 작성해 MapManager에 연결하면 끝! 인줄 알았지만 가장 밑의 이미지처럼 오류가 생겼다. 이것저것 해보다가 알아낸 결과, 왜인지는 잘 모르지만 GameObject 옆의 Static 체크박스를 모두 해제하니깐 되었다! using Unity.AI.Navigation; using UnityEngine; public class MapManager : MonoB.. 2024. 1. 9.
[Unity] 헷갈리는 개념, Collider - Layer Overrides(Include Layers, Exclude Layers) 유니티에서 콜라이더의 속성 중 Layer Overrides에 대해 알아보자! 아래 그림과 같은 대부분의 기본 콜라이더에 포함되어있는 Layer Overrides 속성을 이용해 레이어를 이용한 확장기능을 이용할 수 있다. 1. Layer Override Priority : 자신의 콜라이더와 겹치는 충돌이 발생할 때 어떤 것을 우선할지를 정해주는 우선순위이다. : 숫자가 낮을수록 우선순위가 높다. 2. Include Layers : 충돌행렬에서 충돌이 안되게 설정한 것들을 이 물체에만 충돌체크가 되도록 해준다. 3. Exclude Layers : 설정한 레이어로 된 콜라이더와의 접촉은 무시한다. ※ 예시 1. 아래 그림에서 가운데 두 캡슐은 각각 큰 원형의 콜라이더를 가지고 있다.(Rigidbody도 가지고.. 2024. 1. 5.