본문 바로가기

전체 글537

[C# 섹션 8] Exception # Exception특정 부분에서 예외가 발생하는지 확인하고예외가 발생한 경우에 특정 기능을 실행시키기 위해서 주로 사용된다 예외가 발생하는 대표적인 경우는0으로 나누기, 잘못된 메모리 참조(null), 오버플로우 등이 있다 try문을 통해 예외 발생 여부를 확인하고catch문을 통해 예외가 발생한 경우의 조치를 구현할 수 있다namespace CSharp{ internal class Program { static void Main(string[] args) { try { int a = 8; int b = 0; int result = a / b; .. 2025. 6. 26.
[유니티 Note] 섹션 4-2 # prefab Instance를 코드로 생성하는 방법방식 1)툴에서 prefab을 지정해 생성하는 방식이다툴에서 prefab 게임오브젝트에 수동으로 prefab 에셋을넣어주어 지정을 해서 생성을 한다public class PrefabTest : MonoBehaviour{ public GameObject prefab; GameObject tank; void Start() { tank = Instantiate(prefab); Destroy(tank, 3.0f); }} 방식 2)코드로 경로를 지정해 prefab을 지정해 prefab을 생성하는 방식이다public class PrefabTest : MonoBehaviour{ GameObject pr.. 2025. 6. 25.
[유니티 Note] 섹션 4-1 # 부모자식관계오브젝트들을 부모 자식관계로 만들면,자식은 현재 부모를 기준으로 한 좌표를 가진다그래서 부모가 아무리 회전과 이동을 하더라도,자식은 부모에게 붙은 상태로 유지되며회전과 이동에 대한 좌표가 달라지지 않는다 # Prefab 에셋 제작 방법Hierarchy창에서 원하는 오브젝트를에셋폴더에 드래그 드롭하면 Prefab 에셋을 생성할 수 있다 반대로, 에셋폴더에 Prefab 에셋을 Hierarchy창에 드래드 드랍하면Prefab 인스턴스가 생성된다 # Prefab의 작동 방식 Prefab의 작동 방식은 C# class와 동일하게 작동한다에셋폴더에 있는 Prefab 에셋의 값을 수정하면,자동으로 엔진에서 해당 Prefab을 사용하는 모든 객체들의 값들을 수정한다또한, Prefab으로 생성된 각각의.. 2025. 6. 25.
[C# 섹션 8] Lambda # Lambda 개념일회용 함수를 만드는 문법이다 # Lambda 왜 필요한가?- 일반적인 하드코딩 방법아래의 코드를 보면, Find 함수를 종류별로 다 만들어주며매우 비효율적이다using System;namespace CSharp{ enum ItemType { Weapon, Armor, Amulet, Ring, } enum Rarity { Normal, Uncommon, Rare, } class Item { public ItemType ItemType; public Rarity Rarity; } internal class P.. 2025. 6. 25.
[C# 섹션 8] Event # delegate 문제점delegate는 치명적인 단점이 있다외부에서 언제든지 누구나 호출이 가능하다는 것이다 아래의 예시를 보면,InputManager의 delegate 객체인 InputKey를외부에서 아무나 호출이 가능하다는 것이다// InputManagernamespace CSharp{ class InputManager { public delegate void OnInputKey(); public OnInputKey InputKey; public void Update() { if (Console.KeyAvailable == false) return; ConsoleKeyIn.. 2025. 6. 25.
[C# 섹션 8] Delegate # delegate의 필요성C#의 delegate는 C++의 함수포인터와 같은 개념이다아래를 통해 왜 필요한지 알아보자 예를 들어서 버튼이 눌리는 경우, 특정 작업을 구현하고 싶다고 가정하자그렇다면 ButtonPressed 같은 함수 내부에 원하는 작업을 작성하면 된다static void ButtonPressed(){ // 기존 코드 // 어쩌고 저쩌고 기능 추가} 그러나 위의 코드는 복잡성을 증가시키고또한, 사실상 게임 엔진에서는 저런 함수 자체만을 제공하는 것이고함수 내부를 수정하지는 못하도록 해두었다 그래서 아래와 같이사실상 ButtonPressed의 함수의 인자로우리가 원하는 함수자체를 인자로 넘겨주고 싶은 것이 핵심이다static void ButtonPressed(// 함수를 인자로 넘겨.. 2025. 6. 25.