본문 바로가기

728x90

전체 글

(53)
[유니티] 씬 재로딩 후 Action 변수의 target null 문제 아래와 같이 정적 클래스에 Action 참조 변수를 만들어놓고 public class MethodManager { public static event System.Action SomeThing; public static void DoSomeThing() { SomeThing(); } } 아래와 같이 다른 클래스에서 함수를 등록하여 사용하려고 합니다. public class GameControll : MonoBehaviour { void Start() { MethodManager.SomeThing += Controll1; } void Controll1() { // do controll1 } } 이제 다른 클래스에서 언제든지 MethodManager.DoSometing(); 을 호출하면 GameControl..
[유니티] Input.GetKey() 한글로 입력해도 동작하게 하고 싶다면 - 예를 들어 키보드 wasd 로 캐릭터나 카메라를 이동해야하는 경우 Input.GetKey(KeyCode.W)) { MoveUp(); } 위와 같이 사용하면 영어일때만 동작하고 한글일 때는 동작하지 않습니다. switch (Input.inputString) { case "W": MoveUp(); break; } 이렇게 사용하면 부드럽게 실행되지 않고 뚝뚝 끊겨서 사용됩니다. - 이 방법 저 방법 찾아보다가 의외로 간단하게 해결되었는데, Edit > Project Setting... > Input Manager 에서 Use Physical Keys 를 사용하면 됩니다. 밑에 있는 설명을 보니 물리적 키를 사용하면 키보드 언어 레이아웃에서 키 코드를 물리적 키트에 독립적으로 매핑할 수 있다. 예를 들어 키..
[유니티/셰이더] 순차적 체커보드 패턴 Procedural checkerboard pattern # 순차적 체커보드 패턴 메시의 텍스처 좌표에 기반한 체커보드 패턴을 출력하는 셰이더입니다. Shader "Unlit/Checkerboard" { Properties { // 체커보드의 밀도를 결정합니다. _Density ("Density", Range(2,50)) = 30 } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; float _Density; v2f vert (float4 pos : POSITION, float2 uv : TEXCOORD0) { v2f ..
[유니티/셰이더] 커스텀 셰이더 기초 # 준비 기본적인 머테리얼을 생성합니다. Unlit Shader를 생성합니다. 이것은 조명없이 텍스처만 표시하는 간단한 셰이더입니다. 유니티의 에셋스토어에서 무료로 제공하는 Space Robot Kyle 에셋을 임포트합니다. # 간단한 Unlit Shader 기본적인 언릿 셰이더를 생성하고 더 단순화한 뒤 코멘트를 붙였습니다. Shader "Unlit/NewUnlitShader" { Properties { // 인스펙터에 타일링/오프셋 설정이 보이지 않습니다. [NoScaleOffset] _MainTex("Texture", 2D) = "white" {} } SubShader { Pass { CGPROGRAM #pragma vertex vert // 버텍스 셰이더는 vert #pragma fragment ..
[Java] Open JDK 폴더 찾는 법 # JDK 폴더 찾기 윈도우키 + r 을 눌러 실행 창을 열고 "cmd" 를 실행합니다. 명령 프롬프트가 실행되면 where /r c:\ javac.exe 를 입력합니다. 다음과 같이 JDK위치한 폴더 리스트를 알 수 있습니다. # where /? /r : 존재하는 jdk 폴더를 모두 찾습니다. c:\ : 탐색할 폴더를 지정할 수 있습니다. 이 경우에는 C드라이브 전체가 대상이 됩니다. javac.exe : 찾는 대상이 됩니다. javac.* 이라고 하면 확장자를 구분하지 않고 모두 찾습니다.
[알고리즘/C++] 요세푸스 순열 문제 Josephus problem # 요세푸스 문제 Josephus problem 요세푸스 문제 Josephus problem 혹은 요세푸스 순열 Josephus permutation 이라고 합니다. 자연수 n, k ( k < n )이 있습니다. n명이 동그랗게 앉아있을 때 임의의 한 명부터 순서를 세어 k번 째 사람을 제외합니다. 다음 사람부터 k번째 사람을 제외합니다. 이렇게 제외되는 사람의 순서가 요세푸스 순열이고, 마지막에 남는 (혹은 제외되는)사람을 구하는 문제가 요세푸스 문제입니다. # 알고리즘 이해 n=5; k=3; 으로 가정합니다. 즉 다섯 명이 모여있고, 세 번째 순서일 때마다 제외합니다. # 코드 예제 #include #include using namespace std; int main(){ int n, k, x, re..
[C#] sealed 한정자 # sealed 클래스에 붙은 한정자 sealed는 다른 클래스가 상속 할 수 없습니다. public class A{} public sealed class B : A {} public class C : B {} // 에러 발생 클래스 B는 A를 상속할 수 있습니다. 클래스 C는 sealed 한정자가 붙은 B를 상속할 수 없습니다. 또한 가상 함수도 봉인하여 재정의할 수 없게 할 수 있습니다. class A{ protected virtual void F() {Consol.WriteLine("this is F() with A"); } } class B : A{ sealed protected override void F() {Consol.WriteLine("this is F() with B"); } } cla..
[유니티] Photon Fusion 103 간단 요약 # Photon Fusion 103 Photon Fusion 103은 Photon 홈페이지의 기술문서에 있는 Fusion 튜토리얼 중 한 단계를 말합니다. # FixedUpdateNetwork 로컬 물리 시뮬레이션에서 MonoBehaviour의 FixedUpdate() 역할을 하는 것이 네트워크 물리 시뮬레이션에서 NetworkBehaviour의 FixedUpdateNetwork()입니다. 각 틱의 시간 간격은 NetworkProjectConfig의 Simulation > Tick Rate에 의해 정의되며, 1/60초의 델타와 같습니다. NetworkRunner.DeltaTime 으로 접근할 수 있습니다. 따라서 Time.deltaTime이 아니라 Runner.DeltaTime으로 사용합니다. using..
[안드로이드] 간단한 MP3 플레이어 앱 만들기 # 간단한 MP3 플레이어 기능 안드로이드 스튜디오에서 구현할 수 있는 간단한 MP3 플레이어 앱입니다. # 준비물 mp3 파일 2~3개 이상 # AndroidManifest.xml SD카드 공간을 사용하기 위해 permission 속성 추가입니다. // 이 코드와 emulated > 0 에 넣어줍니다. 해당 폴더를 우클릭하여 upload로 저장할 수 있습니다. 저장하고나면 아래쪽에 song1.mp3 ~ song3.mp3 처럼 파일이 저장된 것을 확인할 수 있습니다. # activity_main.xml 메인 액티비티의 화면을 구성합니다. 위치: project > app > res > layout // mp3 리스트를 보여주고 선택합니다. // 재생버튼, 정지버튼 // 현재 재생중인 음악을 보여줍니다. /..
[알고리즘/C] 등수 매기기 (브루트 포스: brute force) # 문제 여러명의 점수가 배열로 있을 때, 각 점수의 등수를 매겨야 합니다. 점수 배열이 20 40 10 50 30 이렇게 들어오면 등수는 4 2 5 1 3 로 나와야 합니다. # 브루트 포스 : 전체 탐색 알고리즘 int score[5] = {20, 40, 10, 50, 30}; int rank[5] = {1, 1, 1, 1, 1}; for(int i=0; i
[유니티] Photon Fusion 102 간단 요약 # Photon Fusion 102 Photon Fusion 102은 Photon 홈페이지의 기술문서에 있는 Fusion 튜토리얼 중 한 단계를 말합니다. # 방만들기, 접속하기 Photon Fusion 네트워크의 주체는 입니다. NetworkRunner의 멤버 함수인 StartGame(StartGameArgs args) 로 Fusion 네트워크를 시작할 수 있습니다. private NetworkRunner _runner;// 러너 변수를 선언하고 _runner = gameObject.AddComponent(); // 객체를 생성합니다. _runner.ProvideInput = true;// 이 클라이언트에서 입력을 한다는 뜻 await _runner.StartGame(new StartGameArgs()..
[C#] out var 파라미터 out은 참조를 통해 인수를 전달하는 키워드입니다. return 으로 반환값을 받지 않기 때문에, 2개 이상의 값도 가져올 수 있습니다. 간단한 사용방법은 아래와 같습니다. 함수 호출부와 함수 정의부에서 out 키워드를 사용해야 합니다. int x, y; Get(out x, out y);// 함수 호출부 Console.WriteLine($"{x}:{y}"); void Get(out int x, out int y) // 함수 정의부 { x = 10; y = 20; } 출력결과 10:20 C# 7부터 더욱 편리해졌습니다. Get(out int x, out int y);// 변수 선언없이 사용 Console.WriteLine($"{x}:{y}"); void Get(out int x, out int y) { x..

728x90