
Explorer : 폴더 열기

Extensions : 확장 프로그램


VS Code에서 Node.js 코딩 하게 해주는 확장 프로그램
_____________________________________________________________________
리액트 프로젝트 다운로드 클론

WD@WINDOWS-IN3N7LQ MINGW64 ~/Desktop/KYS/MyGitHub/react_test (KYS)
$ Git config core.autocrlf true
WD@WINDOWS-IN3N7LQ MINGW64 ~/Desktop/KYS/MyGitHub/react_test (KYS)
$ git config core.eol lf
WD@WINDOWS-IN3N7LQ MINGW64 ~/Desktop/KYS/MyGitHub/react_test (KYS)
$ git config core.autolf input
그냥 외워놓는다고 하시고 어떤 기능인진 말 안해줬음



누르면 경로 잡아줌
이거로 별 달리 뭘 하진 않았음
Gitignore

node_modules를 예시로
너무 많은 파일들이 있는데 이걸 또 올릴 이유가 없어서
이를 제외해주는게 Gitignore


.env 생성
-> 이 파일에 토큰이나 패스워드 와 같은 정보를 저장
토큰이나 패스워드는 깃허브에 업로드되어서는 안된다.
그러므로 Gitignore에 등록해서 파일이 추적되거나 이력관리가 되지 않도록, 업로드도 되지 않도록
ignore에 env를 추가해야 한다.


.env에 * 찍으면 저 아래 env시리즈들 전부 포함함
Git bash에서 아까 new 에 새로 만든걸 경로로 잡음

npm install
npm run start

3001인 서버가 새로 뜸
______________________________________________________________________
오쿨루전 컬링(Occlusion Culling) : 한물체가 다른 물체를 가리는 것
Culling : 제거(렌더링 안하기)
메인 카메라에서 occlusion Culling 체크

벽이랑 땅에다가 occluder(가리는 물체), occludee(가려지는 물체) 체크


베럴들도 체크

키면 인스펙터 창 있는 쪽에 나옴


Bake

시야에 안들어오는 애들이 씬화면에서도 사라지는걸 알 수 있음
무기 교체
교체를 터치하면 무기가 교체되고, 총 쏘는 사운드, 장전 사운드, 무기 메시등을 바꾸도록

UI를 만들어둠
public void OnChangeWeapon()
{
this.curWeaponType = (eWeaponType)((int)++this.curWeaponType % 2);
weaponImageUI.sprite = this.weaponIcons[(int)this.curWeaponType];
}

버튼에 할당
변경은 되지만 변경할때도 마우스 클릭이라 총이 발사되는 문제가 있었음
void Update()
{
if (EventSystem.current.IsPointerOverGameObject()) return;
//버튼에 닿았다면 하위 코드 생략
//이벤트 훅(Event Hook) 이라고 함
안보이게 해놓은 dim이미지 등이 막아 아예 발사가 안되는 문제가 있었음

Raycast Target체크해제

ui등을 누를때만 발사가 안됨
일시정지
public void OnPause()
{
isPaused = !isPaused;
Time.timeScale = isPaused ? 0 : 1; //멈추면 0, 아니면 1
var playerObj = GameObject.FindGameObjectWithTag(player);
var scripts = playerObj.GetComponents<MonoBehaviour>(); // 플레이어에 붙은 모든 코드
foreach (var item in scripts)
{
item.enabled = !isPaused; // 멈춰있다면 비활성화 하도록
}
}
버튼 만들어서 저렇게 넣음

일시정지 눌렀는데 무기는 바뀌는 문제가 나옴
무기교체 버튼에 Canvas Group 넣음

Alpha : UI의 알파값
Interactable : 상호작용 활성화 여부
UI를 껐다켰다 하는거 할거면 게임오브젝트를 직접 끄는게 아니라 저걸 건드리는것
public void OnPause()
{
isPaused = !isPaused;
Time.timeScale = isPaused ? 0 : 1;
var playerObj = GameObject.FindGameObjectWithTag(player);
var scripts = playerObj.GetComponents<MonoBehaviour>();
foreach (var item in scripts)
{
item.enabled = !isPaused;
}
//아래 부분 추가
var canvasGroup = panel_Weapon.GetComponent<CanvasGroup>();
canvasGroup.blocksRaycasts = !isPaused;
}
blocksRaycasts = true면 얘가 마우스등으로 누를수 있는 상태, Ray를 얘가 받아내서 만약 얘 뒤에 뭐 있으면 걔는 못누름
인벤토리

Grid Layout Group

열에 다 맞춰줌

위치 조정용 변수들
드래그 만들기
public class Drag : MonoBehaviour,IDragHandler
{
void Start()
{
}
//드래그 이벤트
public void OnDrag(PointerEventData eventData)
{
this.transform.position = Input.mousePosition;
}
}
드래그하면 위치를 마우스 위치로

그리드가 위치를 계속 원래대로 돌려서 잘 안되는걸 확인함
, IBeginDragHandler, IEndDragHandler // 상속 추가
public void OnBeginDrag(PointerEventData eventData) //드래그 시작
{
this.transform.SetParent(this.inventoryTr);
}
public void OnEndDrag(PointerEventData eventData) //드래그 끝
{
}
한번 끌고나면 망가지는걸 확인함

drop이라는 새로운 스크립트를 슬롯에 전부 부착
public class Drop : MonoBehaviour, IDropHandler
{
public void OnDrop(PointerEventData eventData)
{
if (this.transform.childCount == 0)
{
Drag.draggingItem.transform.SetParent(this.transform, false); // false : 로컬 트랜스폼인지 아니면 월드인지
}
}
}
놨을때 슬롯쪽에 붙게 설정
슬롯쪽에 안놨을때 망가짐
public void OnDrag(PointerEventData eventData) // 드래그 중
{
this.transform.position = Input.mousePosition;
}
public void OnBeginDrag(PointerEventData eventData) //드래그 시작
{
this.transform.SetParent(this.inventoryTr);
draggingItem = this.gameObject; // 드래그가 시작되면 드래그 되는 아이템 정보를 저장함
this.cvGroup.blocksRaycasts = false; // 드래그가 시작되면 다른 UI 이벤트를 받지 않도록 설정
}
public void OnEndDrag(PointerEventData eventData) //드래그 끝
{
draggingItem = null;
this.cvGroup.blocksRaycasts = true; // 드래그가 끝나면 다시 UI 이벤트를 받게 설정
//슬롯에 드래그 되지 않았을 경우, 원래대로 돌아온다.
if(this.transform.parent == this.inventoryTr)
{
this.transform.SetParent(this.itemListTr.transform);
}
}
슬롯쪽에 붙였을때 정렬이 안됨

grid layout 추가
Item에 Canvas Group이 부착되어있지 않으면 slot쪽에 부착되지않는다.
_______________________________________________________________________

어지간하면 건드리면 안되는 곳
Fixed Timestep : 숫자를 낮추면 Fixed Update를 더 빠른 주기로 돌게함
_____________________________________________________________________

버튼들을 연결시켜주는 내용
그 막 탭누르면 다음버튼 가는 그런느낌인데
horizontal -> 좌우 이동
vertical -> 상하 이동
버튼 한번 누르면 Navigation설정 된 애들끼리 방향키로 조절되면서 스페이스바로 클릭이 되게 됨
'2025유니티수업' 카테고리의 다른 글
| 0627 유니티(Scriptable Object, Raycast 총 발사) (0) | 2025.06.27 |
|---|---|
| 0626 깃허브 , 데이터 저장/불러오기 (1) | 2025.06.26 |
| 0624 유니티(시네머신에 쉐이크 적용, UI 동적할당) (0) | 2025.06.24 |
| 0623 Git Bash(리액터를 이용한 업로드), 유니티(카메라 쉐이크) (0) | 2025.06.23 |
| 0620 깃허브 데스크톱(프로젝트 삭제, 다운로드), 유니티( 오브젝트 풀링,Avatar Mask) (0) | 2025.06.20 |