술취한 양키 아저씨가

막 지어낸 게 영어임

 

 

그래서

발음도 지렁이 같음

문법도 통일성이 없음

글자도 날림체처럼 생김

 

 

 

반면 , 한국어는 1400 년대에 한번 패치 함

정돈되어 있음

 

 

 

 

 

우리나라 사람 입장에선

영어가 이해가 안됨

 

 

 

술취한 아저씨가 웅얼거리는 게 영어 임

 

 

전세계인이 쓰는 공용어가

원시인이 웅얼 거리는 저급한 언어 였다니..

충격적인 사실이지만 사실은 사실임

 

 

영어를 해석하려고 노력하면 안됨

 

 

영어는 문법이 개판이라

그냥 의미를 추측 해야하는 구식 언어임

 

 

 

 

 

 

 

반응형
Posted by 이름이 익명
:

https://learn.unity.com/tutorial/dongjag-keomponeonteuro-sayongdoeneun-seukeuribteu?uv=2019.3&projectId=625e4bf5edbc2a03c37c9827#

 

동작 컴포넌트로 사용되는 스크립트 - Unity Learn

Unity에서 스크립트란 무엇일까요? Unity 스크립트인 동작 컴포넌트에 대해 알아보고, 이 컴포넌트를 생성하고 오브젝트에 연결하는 방법을 배워 보세요. 이 튜토리얼은 스크립팅의 기초 프로젝트

learn.unity.com

강의 링크

 

 

 

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.R))
        {
            GetComponent<Renderer> ().material.color = Color.red;
        }

이러면 
키보드 R 누르면
이 스크립트 넣은 개체의 색이 빨강 으로 바뀜



Color.red
는 r 255 g 0 b 0 을 의미한다



기본 색상 상수

검정 black   0 0 0 
하양 white  255 255 255
회색 grey  128 128 128
자주  magenta  255 0 255
노랑 yellow  255 235 4
청록 cyan   0 255 255
무색 clear   0 0 0  (투명이라는데 검정색이 됨)

 

 

 

이 색상 함수 변환 스크립트는

< Renderer > 를 썼기에,

MeshRenderer 콤포넌트가 선행으로 필요하다

 

 

 

유니티에서 스크립트 란?

기존에 누가 만들어놓은 것이 컴포넌트 이다

이것 외의 새기능을 만드는게 스크립트 이다

 

 

            GetComponent<Renderer>().material.color 
            = new Color (0f / 255f, 50f / 255f, 130f / 255f, 1f);

rgb 0, 50, 130 알파값 1 로 지정 하고 싶으면

이렇게 식을 짜면 됨

약간 어두운 파란색이 나옴

마지막 1f는 Alpha(투명도) 값

 

 

+

 

 


int myInt
myInt = 5;

myInt 라는 새 변수를 만들건데 형식은 정수 integer 다
그리고 그 값은 5로 정한다.

이 두 줄을 합치고 줄여서 아래와 같이 표현한다

int myInt = 5;

 

 



myInt = 5 * 2;
Debug.Log ( myInt ) ;


를 아래와 같이 써도 무방하다


myInt = 5
Debug.Log ( myInt * 2 ) ;




void
외부로 나오면 값이 int 변수 5 그대로임
return
외부로 나오면 int 변수 값이 5 * 2 = 10 변환된 값으로 변함

 

 

 

+

 

 


주석

//이 행은 오브젝트의 x 위치를 나타냅니다.

/*
이건 주석이고 설명임
두 줄로 구성된 주석입니다
*/

 

 

 

+


괄호 영어 발음법

소괄호 ( ) 
parentheses 
용도: 함수 호출, 수식 그룹화

중괄호 { }
curly braces
용도: 코드 블록, 클래스/함수 범위

대괄호 [ ]
square brackets
용도: 배열, 속성(Attribute), 인덱스 접근

 

+

 

 

Debug.Log
구성을 보자
국가.도시
큰거.작은거
이렇게 마침표로 나뉜다

Debug. 까지 찍으면 비쥬얼 스튜디오에서 알아서

Debug 속 구성요소 추천을 해준다

 

 

 

+

 

 

들여쓰기(Indentation)
문장정리

tab 키 ㅡ 오른쪽으로 띄기
shift tab 키 ㅡ  왼쪽으로 밀기

 

 

 

반응형
Posted by 이름이 익명
:

 
 

 

 
 

 
 
 
모든 경우의 수를 봐야 함
잘게 잘라서 생각해야 함
 
+
 
 


스크립트 속에서
state 상태를 정한다

GameManger 에 다 몰아넣지 말고
나눠라
일반 메뉴는 GameState는 GameManger에 저장
전투 속 BattleState는 파일명 BattleState.cs에 저장




GameManager 스크립트에 너무 많은 걸 때려박으면
너무 커지고 복잡해져서 안좋다





지금 현 상황이 어떤 거냐 

public enum GameState
{
    Loading,
    MainMenu,
    WorldMap,
    BattleStart,
    BattleEnd
}

public enum BattleState
{
    BattleInit,  // 전투 시작시
    PlayerTurn, // 아군턴
    EnemyTurn,  // 적군턴
    Victory,
    Defeat
}


GameManager 가 아니라
BattleState 가 턴의 state 를 관리한다




맨 처음 만들 변수는 생존 여부다
bool 변수 
public bool isLive; 
적이 살아있는 상태냐


public BattleState battleState;

void Awake()
{
  battleState = BattleState.BattleInit;
}

어웨이크 에 스타트 넣어서 
스타트 상황 부터 시작한다




플레이어 턴이 아닐 땐 버튼 누르는 걸 방지해야 한다
공격을 방지해야 한다

public void PlayerAttackButton()
if (battleState != BattleState.PlayerTurn)
{
return;
}


더 자세한건 

https://youtu.be/UTWg2ukJP3k?si=OvEuanP0U5vB9Vnb

+


위는 강의용으로 맛보기로 공개한 거고
배틀 스테이트는 총 5분할이 추천된다


BATTLE_NONBATTLE ㅡ 일상맵
BATTLE_SETUP ㅡ 세트장 준비
BATTLE_READY ㅡ ui와 순서, 버프 설정
BATTLE_ACTIVE ㅡ 전투 진행
BATTLE_RESULT ㅡ 전투 결과


전투 시작 부분을 둘로 나눔

BATTLE SETUP: "무엇을 보여줄까" (렌더링)
BATTLE READY: "어떻게 싸울까" (로직)


BATTLE_SETUP (물리적 준비)
- 맵 생성/로딩
- 지형 오브젝트 배치
- 아군/적군 유닛 스폰
- 카메라 초기 위치 설정
- 전투 진입 연출 (페이드, 줌인)
- 배경음악 변경
소요 시간: 1-3초 (로딩 + 연출)


BATTLE_READY (논리적 준비)
- 턴 순서(Initiative) 계산
- 속도/스탯 기반 순서 정렬
- UI 요소 활성화
  - 턴 순서 표시 바
  - 유닛 HP/MP 게이지
  - 미니맵
- 버프/디버프 초기화
- 카메라를 첫 번째 행동 유닛에게 이동
- "Battle Start!" 메시지
소요 시간: 0.5-1초 (UI 애니메이션)


이 분리는 코드 품질과 유지보수성을 크게 향상시킵니다.
Fire Emblem, XCOM, Final Fantasy Tactics 같은 상업 게임들도 유사한 구조를 사용합니다. 👍.

.


로딩
전투 준비 중
공격 애니메이션 실행 중
아군 턴이지만 행동불능 상태이상 걸렸을 때
적의 턴
특수 대화
전투 결과

이 경우 플레이어의 입력을 차단 해야 함

.


일상맵  ↔️ 전투맵
↕️
월드맵


.

연관 검색어

battle state
unity tactics
turn system




반응형
Posted by 이름이 익명
:

유니티 3d srpg 턴제 게임 만들 때 , 

비쥬얼 스크립팅으로 실시간 고쳐가며 수작업으로 만들기 

VS 

유료 에셋도 이용하고 ai도 이용해서 그냥 C# 코드 이용해서 만들기 
둘 중 뭐가 더 좋은 전략일까


 


비쥬얼 스크립트 볼트 노드 이용시 :

점점 노드가 복잡해져서 직관성이 떨어짐
성능 문제
고급 AI, UI, 세이브 시스템 등은 결국 C# 코딩으로 해야 함

 



숙련되면
C# + 유료 에셋 + AI 보조로 본 제작 하는 게 가장 현명한 전략이에요.

 

 

 

반응형
Posted by 이름이 익명
:

너네.인간.

카테고리 없음 2025. 10. 27. 14:33 |


노잼 노유익 무쓸모 똥손

씹덕 외동 금쪽이 MZ

공주병 F 감성배설충

신고질이나 하는 불편러 억까충




노잼 무쓸모 개돼지들

노잼 무쓸모 감정배설충



신고질이나 하는
불만가득 MZ



너네.인간은.
금손에게 싸패 라고 욕하고
틀딱 이라고 욕하지

난 너네가 싫어









반응형
Posted by 이름이 익명
:

코루틴

unity 유니티 공부 2025. 10. 26. 16:53 |




코루틴

같이 실행
병렬 처리



함수A( );
함수B( );
그냥 코루틴 없이 이렇게 하면
A 끝나고 기다렸다가 다음에 B 나옴
이렇게 직렬, 순차적으로 처리 됨




IEnumerator  를 넣어서 설정함





코루틴 끝엔 yield return 을 넣음

yield return null;
1프레임 대기

yield return new WaitForSeconds(0.1f);
0.1 초 대기함

yield return new WaitForSecondsRealtime(float time);
Time Scale 조정에 영향 안받으며 대기

yield return new WaitForEndOfFrame();
모든 렌더 완료시까지 대기

yield return new WaitUntil ( ( ) => condition);
특정 조건 true 될 때 까지 대기

yield return StartCoroutine(AnotherRoutine());
다른 코루틴 끝날 때까지 대기

 



코루틴 시작할 땐 이런식으로 실행
StartCoroutine( 함수( ) ) ;



Coroutine 변수S
변수를 코루틴으로 지정

StopCoroutine ( 코루틴으로 지정한 변수S )
그 변수를 중지 시키기

StopAllCoroutine( );
지금 이 클래스 내의 모든 코루틴 중지




+



코루틴 쓰는 상황들 =

스킬 발동 연출
모션 시작 → 특정 프레임에서 이펙트 발생
→ 대기 → 데미지 적용 → 모션 종료

피격 연출 
데미지 팝업 → 피격 애니 → 체력바 감소 애니

다음 턴 유닛 선택시까지 대기

페이드 인 서서히 나타나기 효과

페이드 아웃 서서히 사라지기 효과

마우스 오버 ui
캐릭터 위에 마우스를 올렸을 때, 0.5초 후에야 상세 정보 창이 나타나도록 지연 시간

대규모 동시 초기화
수많은 캐릭터의 스탯, 아이템 데이터 등을 여러 프레임에 걸쳐 분할하여 로딩
프레임 드롭 방지 개념임

렉 방지
yield return null (1프레임씩 대기) 를 넣어 연출하여 렉을 방지함

씬 비동기 로딩
다른 씬으로 전환할 때, 로딩 화면을 보여주면서 백그라운드에서 리소스를 로드



+

#region ABCD
숨길 내용
#endregion ABCD

이렇게 안 봐도 되는 코드는 접기 펼치기 기능을 쓸 수 있다
전처리 기능 이라고 함






 

 

반응형
Posted by 이름이 익명
:


내가 꾼 꿈 중에서

하늘을 높이 부유하듯 점프하는 꿈

손을 내밀었더니 후렌치파이 과자가 뿅 생기는 꿈

이 있음



이 증조가
내가 원하는대로 현실이 이루어진다는

현실조작? 능력자? 를 의미하는 걸지도 모름



내가 원하는 대로 인생이 마법처럼 흘러가는 걸수도 있고

내가 하고싶은 취미로 돈을 버는 내용일지도 모름


반응형
Posted by 이름이 익명
:

 

예외 처리(Exception Handling)


NullReferenceException: 
오브젝트를 참조하지 않는 변수에 접근하려고 할 때 발생합니다 
가장 흔함
값이 없다는 거임

DivideByZeroException: 
0으로 나누는 연산을 시도할 때 발생합니다.

IndexOutOfRangeException: 
배열이나 컬렉션의 유효하지 않은 인덱스에 접근하려고 할 때 발생합니다.


C#에서는 try, catch, finally 키워드를 사용하여 예외를 처리합니다.


예외 처리를 해야 하는 이유

안정성: 
예외 발생 시 프로그램이 강제 종료되는 것을 막고, 
사용자에게 친절한 오류 메시지를 보여주거나 다른 방법으로 실행을 계속할 수 있도록 합니다.

디버깅: 
예외가 발생한 지점과 상황을 정확히 파악하여 문제를 해결하는 데 도움을 줍니다.

 

 

public GameObject targetObject;

void Start()
{
    // 예외 처리 대신 if문으로 Null 체크
    if (targetObject != null)
    {
        Debug.Log(targetObject.name);
    }
    else
    {
        Debug.LogError("Target Object가 할당되지 않았습니다.");
    }
}
// NullReferenceException 방지 예시

 

 


+

 

 

abc = 5/0 ; 
이런식으로 0 으로 나누면 컴퓨터에서 오류 뜸
이러면 게임이 튕김

try
{
abc = 5/0 ; 
}
catch(Exception)


이렇게 하면 예외 처리가 된 거임

Exception을 캐치 안에 넣으면 모든 오류를 무시하겠다는 말임

 

 

try
{
    // 예외 발생 가능성이 있는 코드
    int result = 10 / 0; 
}
catch (DivideByZeroException ie)
{
	 // 특정 예외 처리
    Debug.LogError("0으로 나눌 수 없습니다: " + ie.Message);
}
finally
{
	// 오류가 뜨던 말건 실행할 함수
    print(abc);
}

 

이렇게 캐치 안에 특정 오류를 콕 찝을 수 있음

 

 

finally 는 오류가 나던 말건 실행할 것을 의미함




 

 

 

반응형
Posted by 이름이 익명
: