if 문 연습
using UnityEngine;
public class scrIF2 : MonoBehaviour
{
public float fTimeMax = 1; //초기화 하여 돌아갈 시간
public float fCurTime = 0; //현재시간
void Update()
{
fCurTime = fCurTime - Time.deltaTime; // 시간이 감소함
if(fCurTime <= 0)
{
fCurTime = fTimeMax;
Debug.Log("1초 지났다!");
}
}
}
if문 연습2
using UnityEngine;
public class scrIF3 : MonoBehaviour
{
//가위바위보 게임 만들기
//약속.. 가위 1 / 바위 2 / 보 3 / 0 은 안냇다
public int nUser = 0; //사람이 낸것
public int nCom = 0; //컴퓨터가 낸것
public void Update()
{
//input = 키보드, 마우스, 조이스틱, 터치 등 사용자의 모든 입력 장치로부터 들어오는 신호를 관리
/*GetKeyDown = 역할: 사용자가 특정 키를 누른 그 순간(프레임) 딱 한 번만 true를 반환합니다.
특징: 키를 계속 꾹 누르고 있어도 처음 눌린 순간에만 반응하므로, 단발성 액션(예: 점프, 총 쏘기, 메뉴 열기)에 주로 사용됩니다.
GetKeyDown: 누르는 순간 (Down)
GetKey: 누르고 있는 동안 (Stay)
GetKeyUp: 떼는 순간 (Up)*/
/*KeyCode = KeyCode는 유니티에서 정의한 열거형(Enum) 데이터 타입입니다.
역할: 키보드에 있는 수많은 물리적 키들을 컴퓨터가 이해할 수 있는 이름으로 정의해 둔 목록입니다.
예시: A, Space, Escape, Return(엔터) 등 수많은 키 이름이 담겨 있습니다. */
/*Alpha0 = 역할: 키보드 상단 숫자 패드에 있는 숫자 '0' 키를 가리킵니다
참고: 오른쪽 숫자 키패드에 있는 0은 Keypad0이라고 따로 부릅니다. Alpha0는 문자열 자판 위에 있는 숫자 0을 의미합니다.*/
// 유니티 옛날 코드 방식
if (Input.GetKeyDown(KeyCode.Alpha0))
nUser = 0;
if (Input.GetKeyDown(KeyCode.Alpha1))
nUser = 1;
if (Input.GetKeyDown(KeyCode.Alpha2))
nUser = 2;
if (Input.GetKeyDown(KeyCode.Alpha3))
nUser = 3;
if (nUser != 0 && nCom == 0) //사람은 결과를 냇고, 컴퓨터는 내지 않은 상태일때
{
nCom = Random.Range(1, 4); //1~3 까지 랜덤으로 내게 한다
if (nUser == nCom) //비교
{
//비겼다
Debug.Log("비겼다");
}
else
{
//다르다
if (nUser == 1 && nCom == 2) //가위 바위
{
Debug.Log("졌다.");
}
else if (nUser == 1 && nCom == 3) //가위 보
{
Debug.Log("이겼다.");
}
else if (nUser == 2 && nCom == 1) //바위 가위
{
Debug.Log("이겼다.");
}
else if (nUser == 2 && nCom == 3) //바위 보
{
Debug.Log("졌다.");
}
else if (nUser == 3 && nCom == 1) //보 가위
{
Debug.Log("졌다.");
}
else if (nUser == 3 && nCom == 2) //보 바위
{
Debug.Log("이겼다.");
}
else if (nUser == 0 && nCom == 1) //x 가위
{
Debug.Log("유저가 안내서 졌다.");
}
else if (nUser == 0 && nCom == 2) //x 바위
{
Debug.Log("유저가 안내서 졌다.");
}
else if (nUser == 0 && nCom == 3) //x 보
{
Debug.Log("유저가 안내서 졌다.");
}
else
{
Debug.Log("잘못된 값입니다.");
}
}
//초기화 하여 내기 전 상태로 돌아간다
//nUser = 0;
//nCom = 0;
ResetGame();
}
}
public void ResetGame()
{
//초기화 하여 내기 전 상태로 돌아간다
nUser = 0;
nCom = 0;
}
}
가위바위보 에러
에러 발생이유 에러(InvalidOperationException)는 현재 유니티 프로젝트의 설정이 신규 입력 시스템(Input System Package)으로 되어 있는데 예전 방식 코드를 써서 에러 발생
요약 : 코드는 옛날 방식인데, 유니티 엔진 설정은 최신 방식만 쓰도록 되어 있어서
해결방법


input manager (old)로 변경

using UnityEngine;
public class scrIF3_2 : MonoBehaviour
{
int nUser = 0; // 사람이 낸것
int nCom = 0; // 컴퓨터가 낸것
void Update()
{
InputUser(); // 유저가 낸다
if (nUser !=0 && nCom == 0) // 내면 동작한다
{
InputCom(); // 컴퓨터가 낸다
CheckResult(); // 판정한다
ResetGame(); // 초기화 한다
}
}
//유저 입력
void InputUser()
{
if (Input.GetKeyDown(KeyCode.Alpha0))
nUser = 0;
if (Input.GetKeyDown(KeyCode.Alpha1))
nUser = 1;
if (Input.GetKeyDown(KeyCode.Alpha2))
nUser = 2;
if (Input.GetKeyDown(KeyCode.Alpha3))
nUser = 3;
}
//컴퓨터 입력
void InputCom()
{
nCom = Random.Range(1, 4);
}
//결과 판정
void CheckResult()
{
if (nUser == nCom)//비교
{
//비겼다
Debug.Log("비겼다");
}
else
{
if (nUser == 1 && nCom == 3 || nUser == 2 && nCom == 1 || nUser == 3 && nCom == 2)
{
Debug.Log("이겼다.");
}
else if (nUser == 1 && nCom == 2 || nUser == 2 && nCom == 3 || nUser == 3 && nCom == 1)
{
Debug.Log("졌다.");
}
else if (nUser == 0 && nCom == 1 || nUser == 0 && nCom == 2 || nUser == 0 && nCom == 3)
{
Debug.Log("유저가 안내서 졌다.");
}
else
{
Debug.Log("잘못된 값입니다.");
}
}
}
//초기화
public void ResetGame()
{
nUser = 0;
nCom = 0;
}
}
using UnityEngine;
public class scrIF3_2 : MonoBehaviour
{
int nUser = 0; // 사람이 낸것
int nCom = 0; // 컴퓨터가 낸것
void Update()
{
InputUser(); // 유저가 낸다
if (nUser !=0 && nCom == 0) // 내면 동작한다
{
InputCom(nUser); // 컴퓨터가 낸다
CheckResult(); // 판정한다
ResetGame(); // 초기화 한다
}
}
//유저 입력
void InputUser()
{
if (Input.GetKeyDown(KeyCode.Alpha0))
nUser = 0;
if (Input.GetKeyDown(KeyCode.Alpha1))
nUser = 1;
if (Input.GetKeyDown(KeyCode.Alpha2))
nUser = 2;
if (Input.GetKeyDown(KeyCode.Alpha3))
nUser = 3;
}
//컴퓨터 입력
void InputCom(int nUser)
{
// 유저가 낸 값에 따라 이기는 값을 강제로 할당
if (nUser == 1) // 유저가 가위
nCom = 2; // 컴은 바위
else if (nUser == 2) // 유저가 바위
nCom = 3; // 컴은 보
else if (nUser == 3) // 유저가 보
nCom = 1; // 컴은 가위
else
nCom = Random.Range(1, 4); // 유저가 0을 냈거나 예외 상황일 때
}
//결과 판정
void CheckResult()
{
if (nUser == nCom)//비교
{
//비겼다
Debug.Log("비겼다");
}
else
{
if (nUser == 1 && nCom == 3 || nUser == 2 && nCom == 1 || nUser == 3 && nCom == 2)
{
Debug.Log("이겼다.");
}
else if (nUser == 1 && nCom == 2 || nUser == 2 && nCom == 3 || nUser == 3 && nCom == 1)
{
Debug.Log("졌다.");
}
else if (nUser == 0 && nCom == 1 || nUser == 0 && nCom == 2 || nUser == 0 && nCom == 3)
{
Debug.Log("유저가 안내서 졌다.");
}
else
{
Debug.Log("잘못된 값입니다.");
}
}
}
//초기화
public void ResetGame()
{
nUser = 0;
nCom = 0;
}
}
가위 바위 보 코드 정리 함수로 만들기 함수로 정의하여 기능으로 나누기 유저가 낸다 컴퓨터가 낸다 판정을 한다
using UnityEngine;
public class scrIF4 : MonoBehaviour
{
public int nUser1 = 0;
public int nUser2 = 0;
public int user1win = 0;
public int user2win = 0;
public int user1lose = 0;
public int user2lose = 0;
void Update()
{
InputUser1();
InputUser2();
if (nUser1 != 0 && nUser2 != 0)
{
CheckResult();
StageReset();
}
if (user1win == 3 || user2win == 3)
{
GameReset();
}
}
void InputUser1()
{
if (Input.GetKeyDown(KeyCode.Alpha5)) nUser1 = 1;
if (Input.GetKeyDown(KeyCode.Alpha6)) nUser1 = 2;
if (Input.GetKeyDown(KeyCode.Alpha7)) nUser1 = 3;
}
void InputUser2()
{
if (Input.GetKeyDown(KeyCode.Alpha1)) nUser2 = 1;
if (Input.GetKeyDown(KeyCode.Alpha2)) nUser2 = 2;
if (Input.GetKeyDown(KeyCode.Alpha3)) nUser2 = 3;
}
void CheckResult()
{
if (nUser1 == nUser2)
{
Debug.Log("비겼다.");
}
else if ((nUser1 == 1 && nUser2 == 3) ||
(nUser1 == 2 && nUser2 == 1) ||
(nUser1 == 3 && nUser2 == 2))
{
user1win++;
user2lose++;
Debug.Log("user1: " + user1win + "승 " + user1lose + "패" + "user2: " + user2win + "승" + user2lose + "패");
}
else if ((nUser1 == 1 && nUser2 == 2) ||
(nUser1 == 2 && nUser2 == 3) ||
(nUser1 == 3 && nUser2 == 1))
{
user2win++;
user1lose++;
Debug.Log("user1: " + user1win + "승 " + user1lose + "패" + "user2: " + user2win + "승" + user2lose + "패");
}
else
{
Debug.Log("다시 입력하세요");
}
}
public void StageReset()
{
nUser1 = 0;
nUser2 = 0;
}
public void GameReset()
{
nUser1 = 0;
nUser2 = 0;
user1win = 0;
user2win = 0;
user1lose = 0;
user2lose = 0;
}
}
# 2인용 가위 바위 보 게임
using UnityEngine;
public class scrIF4 : MonoBehaviour
{
public int nUser1 = 0;
public int nUser2 = 0;
public int user1win = 0;
public int user2win = 0;
public int user1lose = 0;
public int user2lose = 0;
void Update()
{
InputUser1();
InputUser2();
if (nUser1 != 0 && nUser2 != 0)
{
CheckResult();
StageReset();
}
if (user1win == 3 || user2win == 3)
{
GameReset();
}
}
void InputUser1()
{
if (Input.GetKeyDown(KeyCode.Alpha5)) nUser1 = 1;
if (Input.GetKeyDown(KeyCode.Alpha6)) nUser1 = 2;
if (Input.GetKeyDown(KeyCode.Alpha7)) nUser1 = 3;
}
void InputUser2()
{
if (Input.GetKeyDown(KeyCode.Alpha1)) nUser2 = 1;
if (Input.GetKeyDown(KeyCode.Alpha2)) nUser2 = 2;
if (Input.GetKeyDown(KeyCode.Alpha3)) nUser2 = 3;
}
void CheckResult()
{
if (nUser1 == nUser2)
{
Debug.Log("비겼다.");
}
else if ((nUser1 == 1 && nUser2 == 3) ||
(nUser1 == 2 && nUser2 == 1) ||
(nUser1 == 3 && nUser2 == 2))
{
user1win++;
user2lose++;
Debug.Log("user1: " + user1win + "승 " + user1lose + "패" + "user2: " + user2win + "승" + user2lose + "패");
}
else if ((nUser1 == 1 && nUser2 == 2) ||
(nUser1 == 2 && nUser2 == 3) ||
(nUser1 == 3 && nUser2 == 1))
{
user2win++;
user1lose++;
Debug.Log("user1: " + user1win + "승 " + user1lose + "패" + "user2: " + user2win + "승" + user2lose + "패");
}
else
{
Debug.Log("다시 입력하세요");
}
}
public void StageReset()
{
nUser1 = 0;
nUser2 = 0;
}
public void GameReset()
{
nUser1 = 0;
nUser2 = 0;
user1win = 0;
user2win = 0;
user1lose = 0;
user2lose = 0;
}
}