일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Data Structure
- jupyter
- github
- 다트 언어
- vim
- jupyter lab
- 유니티
- c# winform
- gitlab
- 깃
- c# 윈폼
- docker
- HTML
- 도커
- Unity
- git
- c# 추상 클래스
- 포인터
- c언어
- 구조체
- Python
- dart 언어
- Flutter
- C# delegate
- c#
- C++
- 플러터
- Algorithm
- Houdini
- C언어 포인터
- Today
- Total
목록Unity (7)
nomad-programmer

다른 오브젝트에 잇는 스크립트의 변수를 변경하거나 함수를 호출하는 방법을 알아보자. GetComponent 함수를 사용하는 방법과 Singleton 기법을 사용하는 방법이 있다. 2개의 오브젝트 obj1, boj2를 만들고 obj1에는 TextScript1.cs 스크립트를 컴포넌트로 추가하고 obj2에는 TextScript2.cs 스크립트를 컴포넌트로 추가할 것이다. 그리고 TextScript1.cs 스크립트 안에서 obj2의 컴포넌트인 TextScript2.cs 스크립트의 변수를 변경하고 함수를 호출하겠다. GetComponent 함수 사용하기 TextScript1 스크립트를 드래그하여 Hierarchy 뷰에 있는 obj1 오브젝트에 놓는다. 마찬가지로 TextScript2 스크립트를 드래그하여 Hie..
유니티 관련 자세한 설명은 역시 유니티 공식 문서를 보는 것이 최고. https://docs.unity3d.com/kr/530/Manual/ExecutionOrder.html 이벤트 함수 실행 순서(Execution Order of Event Functions) - Unity 매뉴얼 Unity 이벤트 함수는 사전에 정해진 순서대로 실행됩니다. 실행 순서는 다음과 같습니다. docs.unity3d.com 간략하게 설명하자면... 게임이 시작될 때, 초기화해야 하는 것들을 이곳에 넣으면 된다. Start() 함수와의 차이점은 게임이 실행될 때, 단 한번 실행되는 것은 두 함수 모두 같은데 Awake() 함수가 Start() 함수보다 한박자 빠르다.

Matcap이란 Material Capture의 준말로, Ramp Texture와 비슷하게 이미지로 조명을 대신하는 방식 중 하나이다. Matcap은 라이트의 영향을 최소화해야 하는 모바일 게임에서 최적화를 위해 자주 사용되는 '가짜' 라이팅 방식이며, ViewDir을 기반으로 하므로 카메라를 회전하지 않는 상황에서 좋은 효과를 볼 수 있는 기능이다. 이 방식을 사용하면 라이트를 '전혀 사용하지 않고'도 조명을 받은 것 같은 효과를 낼 수 있다. Shader "Custom/matcap" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Matcap ("Matcap", 2D) = "white" {} } SubShader { Tags { "RenderT..

게임에서 몬스터가 죽을 때, 마치 타들어 가면서 재가 되는 느낌으로 사라지는 장면을 볼 수 있다. 타 들어가면서 흩날리는 재는 파티클로 처리하더라도, 실제 타들어 가는 셰이더를 만들어보자. 타들어 가며 사라져야 하므로, 알파가 적용되어야 한다. 알파 블랜딩이 가동되도록 만들고, 노이즈 텍스처를 받아서 알파로 사용할 수 있도록 해야 한다. Shader "Custom/Alpha2Pass" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _NoiseTex ("NoiseTes", 2D) = "white" {} _Cut("Alpha Cut", Range(0, 1)) = 0 [HDR]_OutColor ("OutColor", Color) = (1,1,1,1) _..
Shader "Custom/AlphaBlend" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Transparent" "Queue"="Transparent" } zwrite off blend SrcAlpha OneMinusSrcAlpha LOD 200 CGPROGRAM #pragma surface surf Lambert keepalpha #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D (_..
라이팅을 커스터마이징하게 만들 수 있다. #pragma surface surf Test noambient 라이팅 이름을 Test로 지정하였다. 이름은 마음대로 지어도 상관 없다. 대신 이름에 적합한 라이팅 함수를 추가해주어야 한다. float4 LightingTest(SurfaceOutput s, float3 lightDir, float atten) { return float4(1, 0, 0, 1); } 이 함수는 무엇을 하든지 붉은 결과물을 출력하는 기능을 가진 함수이다. 또한 이어서 나오는 이름에 주의해야 한다. 저자가 설정한 커스텀 라이트 이름은 "Test" 였다. 그래서 앞에 "Lighting" 이란 이름을 추가해야 라이트 함수로 받아들인다. Lighting + (커스텀 라이트 이름) 따라서, 커..
유니티 셰이더는 ShaderLab이라고 불리는 자체 스크립트 언어를 이용하고 있다. 스크립트는 일반적인 코딩과 약간 다른 방식으로 작성되며 문법도 약간 다르다. 굳이 이렇게 스크립트로 제작된 이유는 유니티의 특성과 사용자의 편의성 때문이다. 유니티는 멀티 플랫폼 제작이 자동으로 지원되는 엔진이다. 즉, 모바일이나 pc, 콘솔기기에 따라 제작되는 셰이더가 달라야 한다. 또한 셰이더는 글미자가 있을 때와 없을 때, 라이트맵이 있을 때와 없을 때 등 여러 가지 경우의 수에 따라 제작방법이 다르다. 다양한 경우의 수를 사용자가 제각각 작성하고 관리한다면 상당한 무리가 따를 수밖에 없다. 그래서 만들어진 유니티 내부의 셰이더 스크립트가 ShderLab이다. 이 스크립트를 사용하면 다양한 경우의 셰이더 분기를 자동..