Programming skills/Unity

    [Unity] VR EyeTracking Gaze data 추출

    [Unity] VR EyeTracking Gaze data 추출

    EyeTracking을 하기 위해 Gaze Method를 활용해 데이터를 추출할 것이다. https://docs.cognitive3d.com/unity/gaze-fixations/ Gaze / Fixations - Cognitive3D - Documentation Gaze and Fixations Gaze and Fixations are closely related. Gaze records the HMD position over time and the direction of the eyes at a set interval. Fixations use a dispersion technique to identify where the participant's eyes are steady and maintaini..

    [유니티] 서버와의 영상 정보 불러오기

    [유니티] 서버와의 영상 정보 불러오기

    유니티 프로젝트 중 서버의 영상 정보를 불러 들어오는 작업이 있어 구조도를 작성해보았다. 크게 영상 정보, ID 정보등 다양한 정보들을 담고 있는 DataManager가 있다. [System.Serializable] // 직렬화 public class VideolInfo //비디오 정보 { public int shortFormNo; //영상 순서 public string title; //제목 public string thumbnailUrl; //썸네일 url public string url; //url public string description; //영상 설명 public string memberName; // 닉네임 public string date; //날짜 public bool isInterac..

    [Unity] 람다식과 델리게이트(delegate)

    [Unity] 람다식과 델리게이트(delegate)

    1. 델리게이트(Delegate) : 매서드를 참조하는 형식 델리게이트는 메서드를 참조하는 형식으로, C#에서 메서드를 객체처럼 다룰 수 있게 해줍니다. 델리게이트는 메서드 시그니처(매개변수 및 반환 유형)를 정의하며, 해당 시그니처와 일치하는 메서드를 참조할 수 있습니다. 델리게이트를 사용하여 메서드를 동적으로 호출하거나 이벤트 처리기에 연결할 수 있습니다. // 델리게이트 정의 delegate int Calculator(int a, int b); // 델리게이트를 사용하여 메서드 참조 Calculator add = (x, y) => x + y; Calculator subtract = (x, y) => x - y; int result1 = add(5, 3); int result2 = subtract(8..

    [Unity]Awake 와 Start의 차이

    [Unity]Awake 와 Start의 차이

    유니티 생명주기를 공부하다 Awake와 Start의 차이에 대한 질문이 들어왔다. 가장 중요한 호출순서의 목적에 대해 공부를 해볼 필요를 느꼈다. 공통점은 둘 다 한 번만 실행되는 초기화 이벤트함수지만 호출시기에 따른 차이가 있다. Awake - 스크립트와 연결된 게임오브젝트가 인스턴스화되거나 스크립트가 처음 로드될때 불린다. 즉 가장 먼저 호출된다. - 해당 오브젝트가 Enable상태가 아니어도 위의 조건이면 호출된다. - 다른 오브젝트에 대한 참조를 생성할 때 주로 사용한다. Start - 해당 스크립트 컴포넌트가 활성화되는 순간 호출된다. - 호출시기는 Awake보다는 느리고 첫 Update보다는 빠르게 호출 - 참조를 통해 접근하는 작업이 가능하다. 즉, Awake는 항상 Start 함수 이전이나..

    [Unity] 생명주기 Life Cycle

    [Unity] 생명주기 Life Cycle

    생명주기(Life Cycle) 클래스를 상속받은 오브젝트가 씬에 있는 동안 일정한 흐름에 따라 함수를 호출하는데 이 패턴의 흐름이 생명주기이다. 그 중 중요흐름도이다. Initialization 1. Awake - 스크립트가 실행될 때 한번만 실행 - 오브젝트 비활성화시 호출되지 않지만 스트립트가 비활성화일경우 호출 - 코루틴으로 실행불가 - 게임의 상태나 변수초기화로 사용 - 오브젝트의 초기화나 프리팹의 인스턴스화가 모두 진행된 직후에 호출되기 때문에 Find함수 호출의 안전성 보장 2. OnEnable - 객체가 활성화될때마다 호출 - 코루틴으로 실행불가 - 이벤트 연결 시 사용 3. Start - 스크립트가 실행될 때 한 번만 실행 - 객체가 비활성되면 호출되지 않는다 - 코루틴으로 실행가능 Phy..

    유니티 오브젝트 생성시 하위 오브젝트로 생성하기

    유니티 오브젝트 생성시 하위 오브젝트로 생성하기

    FPS 게임을 만드는 중 오브젝트가 하이어라키 상단에 생성되는 문제점이 발생했다 클린 코드와 구조화를 목표로 하기에 자신의 부모 오브젝트에 생성하는 방법의 코드이다 //생성 위치 GameObject bullet = Instantiate(attackBulletFactory, firePos.transform.position,Quaternion.identity); //부모 오브젝트에서 생성 bullet.transform.parent = this.transform; 이렇게 하게되면 생성되는 것이 상단 하이어라키에서 보는 문제점을 해결 할 수 있다.

    c# 싱글톤(Single ton)

    c# 싱글톤(Single ton)

    싱글톤은 모든 데이터를 전역으로 관리하여 쉽게 접근하는 장점이 있다. Manager 스크립트 즉 관리를 하는 감독에서 유용하게 사용 가능한 간단한 방법이다. //ScoreManager 싱글톤 패턴 구현 public class A : Monobehaviour { //싱글톤 객체 public static ScoreManager Instance = null; //싱글톤 객체에 값이 없다면 자기 자신 할당 void Awake() { if(Instance == null) { Instance = this; } } } 다음은 Get / Set 프로퍼티를 사용하는 방법이다. 객체지향 프로그래밍의 속성인 캡슐형이 바로 이 속성에 접근하는 프로퍼티이다. Get과 Set 함수의 기능은 그대로 동작하게 하고 접근은 편리하게 ..

    폴가이즈 베타 프로젝트 중 if문 이슈 해결 방법

    폴가이즈 베타 프로젝트 중 if문 이슈 해결 방법

    // 플레이어가 내려오는데 이슈 발생 void Update() { currentTime += Time.deltaTime; if(currentTime > moveTime) { transform.position = target; } if(currentTime > 5) { transform.position += Vector3.down * speed * Time.deltaTime; } } [이슈]플레이어가 내려가지 못하고 있는 영상 //이슈 해결 void Update() { currentTime += Time.deltaTime; if (currentTime > moveTime && currentTime < 9) { transform.position = target; } else { transform.positi..