전체 글262 [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. [자기계발][책] 매일매일 책 레버리지를 읽고 기록하기 1/18 목 (202p ~ 217p) - 구성원을 강제로 레버리지 하려고 하면 구성원은 나에게 반감을 가질 것이다. - 구성원에게 신뢰와 책임감을 부여하라. 그들 스스로 일정을 결정하게 하고, 시간적인 여유를 주면, 그들은 훨씬 분발해서 일할 것이다. - 기업을 운영하는데 많은 원칙이 필요하지만 유일한 상수는 변화와 혁신이다. 기업은 성장하기 위해 계속 변해야 한다. [변화의 전략] - 과감한 변화를 통해 성장하겠다는 마음가짐을 가지고, 성장을 위한 전략에 더 많은 시간을 투자하라. - 부정적인 결과를 수용하라. - 내가 하기 싫거나, 할 수 없거나, 하지 않아도 되는 일은 놓아줘야 한다. - 중요한 일은 신뢰할 수 있는 인재에게 맡겨야 한다. - 내가 먼저 구성원을 신뢰하라. - 너무 바빠서 자신을 도.. 2024. 1. 18. [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] NavMeshAgent에서 물리로 바꿀 때 버그 수정 (feat. 밑으로 추락하는 버그) navMesh를 구웠을 때, 실제 길보다 띄워져서 ai경로가 생기는 현상 발생 -> 멈추고 나서 아래로 추락하는 버그 생김 navMesh.updatePosition과 navMesh.updateRotation을 false로 바꿨는데도 움직이다가 멈추니깐 잘 안됐음. 그래서 꼼수로 updatePosition을 멈추는 순간에 false->true->false로 했더니 됨. 근데 왔다갔다 하는건 그대로임. -> ai맵을 구울때 생기는 살짝 뜬 공간(?)만큼 원래 맵을 올려주니 잘 되는듯..? -> updatePosition, updateRotation, isStopped, velocity를 조절하면 됨.(아래 코드 참고) 2024. 1. 5. [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. 이전 1 2 3 4 5 ··· 22 다음