정리 17

유니티 게임 내 Scripts 최적화 (Unity Article)

Move code out of loops when possible 중복된 루프사용은 자제하라. void Update() { for(int i = 0; i < myArray.Length; i++) { if(exampleBool) { ExampleFunction(myArray[i]); } } } With a simple change, the code iterates through the loop only if the condition is met. void Update() { if(exampleBool) { for(int i = 0; i < myArray.Length; i++) { ExampleFunction(myArray[i]); } } } Only run code when things change 실행 ..

정리/UNITY 2022.04.28

Unity 성능 향상을 위한 권장사항 (Microsoft)

CPU 성능 추천 사항 캐시 참조 GetComponent() 및 Camera.main과 같은 반복적인 함수 호출이 포인터를 저장하는 메모리 비용에 비해 더 비싸기 때문에 초기화 시 모든 관련 구성 요소 및 GameObjects에 대한 참조를 캐싱하는 것이 좋습니다. . Camera.main은 아래의 FindGameObjectsWithTag() 만 사용합니다. 이는 "MainCamera" 태그를 사용하여 장면 그래프에서 카메라 개체를 검색하지만 많은 비용이 들어갑니다. using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { private Camera cam; private CustomComponent c..

정리/UNITY 2022.04.28

Menu_UI 기능 구현

위의 기능을 구현해보자. 메뉴 인터페이스 만들기 기능 구현 EducationPage에서 메뉴 버튼을 연동시킨다. 각 챕터 버튼 클릭 시, 생략 및 확장 기능 기능 구성도 메뉴를 관리해주는 Script 생략 및 확장 기능을 구현할 Script 생략 및 확장 기능 Script 요약 : 각 챕터 하위단의 버튼들은 상위 챕터의 위치를 저장하며, 챕터는 메뉴를 저장받아 서로 간 연결을 통해 메뉴 버튼을 생성한다. 챕터_ 스크립트 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Chapter_Btn: MonoBehaviour { int pre; // 자신의 상위..

정리/UNITY 2022.04.25

IL2CPP

유니티는 C#으로 개발하기 때문에 느리다? -> C#은 개발의 효율성을 위해 유저 코드가 C#으로 이루어 지지만, Unity 엔진은 C++로 구성되어 있어 실제로는 빠르게 개발할 수 있다. 이러한 구조를 알기 위해선 C#과 C++의 차이점을 알아야 한다. - 동적할당 C++은 new를 선언하게 되면 항상 delete를 통해 동적할당을 끝맺어야 한다. 그렇지 않으면 메모리는 계속적으로 new에 대한 값을 갖게 되며 결과적으로 메모리에 대한 과부하가 일어나게 되기 때문이다. 하지만 C#은 GC (Garbage Collection)이라는 기능이 알아서 처리해주기 때문에 좀 더 편하게 작업을 진행 할 수 있다. --> 이러한 점으로 미루어 보아, C#은 동적할당 해제 필요성이 없기 때문에 코드 작성에 있어 C+..

정리/UNITY 2022.03.19

건강에 대한 논문 링크 모음

눈과 컴퓨터 사용에 대한 상관관계 (초등학생 대상) https://www.koreascience.or.kr/article/CFKO200434939592807.page Influences of Computer Use on the Eye-Sights of Higher Grades Pupils in Primary Schools -한국정보교육학회:학술대 Abstract 한국정보문화진흥원에 따르면 국내 전체 가구 컴퓨터 보급률은 매년 증가하고 있는 추세이며 전체 국민의 인터넷 이용률 및 계층별 인터넷 이용률 모두 매년 증가하고 있어 사회 전반의 www.koreascience.or.kr

정리/Reference 2022.03.17

효율적 UI_Component 바인딩

UI 필요성 흔히 우리는 Inspector에 오브젝트를 끌어와 사용한다. 하지만 프로젝트가 점점 커지고, UI 요소가 많아지면 Inspector 복잡해지며, 알아보기 힘든 경우가 많다. 또한, Inspector의 정보값이 달라진다면, 값이 누락되어 예기치 않은 터짐이 발생한다. 이러한 문제점을 해결하고, 접근성을 높이기 위해 UI의 Utility를 높일 필요성을 느꼈다. UI_Base UI_Base는 UI 컨트롤에 베이스역할을 해준다. Dictionary를 통해 Enum 타입에 따라 유니티 오브젝트를 저장하고 필요할 때, 연결시켜주는 기능을 수행한다. using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.U..

정리/UNITY 2022.03.08

Unity Shader (셰이더)

셰이더 셰이더란 무엇인가? 화면에 색을 칠한는 프로그램. 랜더링 파이프라인의 일부를 유연하게 변경하는 프로그램. 이처럼 셰이더도 여러 역할을 가진 셰이더가 있으며, 이 역할들을 최적화 및 변경하여 원하는 렌더링 효과를 낼 수 있다. - 버텍스 셰이더 : 그려질 위치를 결정. ex ) 실제로 보는 사과를 캔버스에 옮겨 스케치하는 작업. -> 3차원의 랜더링 대상을 2차원 모니터에 옮겨지는 작업. - 프래그먼트 셰이더 : 칠할 색을 결정. ex) 실제 보는 사과에 색을 칠하는 작업 -> 3차원의 랜더링 대상을 모두 색칠 작업을 진행한 후, 2차원에 깊이에 따라 색을 결정하는 작업 -컴퓨트 셰이더 : 범용적인 문제에 GPU를 사용한다. 색은 싱글 쓰레드로 처리하는 작업이 아닌, CPU에서 연산을 마친뒤 Tas..

정리/UNITY 2022.03.08