class MyClass
{
[Obsolete("이 메서드는 폐기 되었습니다. NewMethod사용 바람")]
public void OldMethod()
{
Console.WriteLine("old");
}
public void NewMethod()
{
Console.WriteLine("new");
}
}

경고는 나오지만 실행이 되지않는건 아니다.
//결과
old
new
//어트리뷰트는 매개변수에도 들어갈 수 있다.
public static class Trace
{
public static void WriteLine(string message ,
[CallerFilePath]string file = "", //파일 전체 경로
[CallerLineNumber]int line = 0, //줄 라인 행 번호
[CallerMemberName]string member = "") // 호출한 메서드 또는 프로퍼티
{
Console.Write($"{file}(Line : {line} {member} {message})");
}
}
[System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple = true)]
//어트리뷰트를 한번에 여러개 박는걸 허용하는 내용, true로 해야 허용임
class History : System.Attribute // 어트리뷰트 직접 만들기
{
private string programmer;
public double Version { get; set; }
public string Changes { get; set; }
public History(string programmer)
{
this.programmer = programmer;
Version = 1.0;
Changes = "First release";
}
public string Programmer
{
get { return programmer; }
}
}
//실 사용
[History("Kang" , Version = 1.1 , Changes = "2025-6-17 Created class")]
[History("Kang" , Version = 1.2 , Changes = "2025-6-17 Created class")] //어트리뷰트 위에
//System.AttributeUsage 문 으로 인해 2개 써도 에러가 발생하지 않는다
class MyClass
{
public void Func()
{
Console.WriteLine("Func()");
}
}
Type type = typeof(MyClass);
Attribute[] attributes = Attribute.GetCustomAttributes(type);
Console.WriteLine("변화 과정");
foreach (Attribute attr in attributes)
{
History h = attr as History;
if(h != null)
{
Console.WriteLine($"{h.Version} , {h.Programmer} , {h.Changes}");
}
}
____________________________________________________________________
LOD
level of detail


거리에 따라 디테일이 사라지는걸 적용할수 있음

라이트맵
일단 임시로 new 해서 만든 뒤 realtime 체크 해제, mix lighting 체크, subtractive로 변경 후 Generate함

input Manager
없는게 필요할 시 추가도 가능
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TPSPlayerInput : MonoBehaviour
{
public string moveYAxisName = "Vertical";
public string moveXAxisName = "Horizontal";
public string mouseX = "Mouse X";
public string fireButtonName = "Fire1";
public string reloadButtonName = "Reload";
public float MoveZ { get; private set; }//감지된 움직임의 입력값
public float MoveX { get; private set; }//감지된 회전의 입력값
public float mouseRotate { get; private set; } //마우스 X축 회전값
public bool Fire { get; private set; }
public bool Reload { get; private set; }
void Start()
{
}
void Update()
{
if (GameManager.Instance != null && GameManager.Instance.isGameOver)
{
MoveZ = 0; MoveX = 0; Fire = false; Reload = false;
return;
}
MoveZ = Input.GetAxis(moveYAxisName);
MoveX = Input.GetAxis(moveXAxisName);
Fire = Input.GetButton(fireButtonName);
Reload = Input.GetButtonDown(reloadButtonName);
this.mouseRotate = Input.GetAxis(mouseX);
}
}
그림자
모바일 기기에선 그림자가 굉장한 부하를 일으킨다
그래서 그림자 연산을 전부 꺼버리고, 그냥 캐릭터 아래에 검은색 동그라미 하나 띄운다
캐릭터 바닥에 quad생성

쿼드에 그림자 이미지 올리기

그럼 material이 생성됨



메터리얼에 셰이더 셋팅

바닥에 그림자 만듬
'2025유니티수업' 카테고리의 다른 글
| 0619 C#(try, catch), 유니티(적 patrol) (0) | 2025.06.19 |
|---|---|
| 0618 깃허브 데스크톱 , 유니티 (0) | 2025.06.18 |
| 0616 GitBash 설치 / C#(LinQ) / 유니티 (일시정지 메뉴) (0) | 2025.06.16 |
| 0611 C#(이벤트 핸들러, 대리자) (0) | 2025.06.11 |
| 0610 C#(일반화 자료형 T, Dictionary, try catch 예외처리) (0) | 2025.06.10 |