반응형
반응형
옵저버 패턴 객체 간에 일대다 종속 관계를 정의하여 한 객체의 상태 변경이 다른 객체에 자동으로 통지되는 패턴. 게임 내에서 이벤트 시스템 또는 UI 업데이트와 같은 상황에서 유용합니다. using UnityEngine; using System; // 이벤트에 대한 데이터 public class EventData { public string eventName; public int eventValue; } // 옵서버 인터페이스 public interface IObserver { void OnNotify(EventData data); } // 옵서버를 관리하는 클래스 public class Subject { private List _observers = new List(); // 옵서버 등록 public ..
코드 작성 using UnityEngine; public class AngleCalculator : MonoBehaviour { public Transform pointA; public Transform pointB; void Start() { Vector2 direction = pointB.position - pointA.position; float angle = Vector2.Angle(Vector2.right, direction); Debug.Log("Angle between the two points: " + angle); } } 다른 예시 using UnityEngine; public class AngleCalculator : MonoBehaviour { public Transform point..
코드 작성 using UnityEngine; using System.Collections.Generic; public class RandomNumberGenerator : MonoBehaviour { private List exclusionList = new List() { 2, 3, 5, 6 }; //제외할 값 private int GenerateRandomNumber(int min, int max) { int randomValue = Random.Range(min, max); while (exclusionList.Contains(randomValue)) { randomValue = Random.Range(min, max); } return randomValue; } }
기본 단축키Win + D: 바탕 화면 보기/숨기기Win + E: 파일 탐색기 열기Win + L: PC 잠금Win + M: 모든 창 최소화Win + Shift + M: 최소화된 창 복원Win + R: 실행 대화 상자 열기Win + S: 검색 열기Win + I: 설정 열기Win + A: 알림 센터 열기창 관리Win + Arrow Keys: 창을 화면의 좌/우/상/하로 이동Win + Shift + Arrow Keys: 창을 다른 모니터로 이동Win + Home: 현재 창을 제외한 모든 창 최소화/복원Win + Tab: 작업 보기 열기Alt + Tab: 열린 앱 간 전환Alt + F4: 활성 창 닫기가상 데스크톱Win + Ctrl + D: 새 가상 데스크톱 만들기Win + Ctrl + Right/Left Arr..
Flutter 플러터 Progress bar 진행바 간단 구현import 'package:flutter/material.dart';class MyWidget extends StatefulWidget { const MyWidget({Key? key}) : super(key: key); @override _MyWidgetState createState() => _MyWidgetState();}class _MyWidgetState extends State { double _progressValue = 0.0; void _updateProgress() { setState(() { _progressValue += 0.1; if (_progressValue >= 1.0) { ..
코드 작성 void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (stream.IsWriting) { stream.SendNext(transform.rotation); } else { Quaternion rotation = (Quaternion)stream.ReceiveNext(); float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.timestamp)); transform.rotation = Quaternion.Lerp(transform.rotation, rotation, lag); } }
코드 작성 using UnityEngine; using System.Collections; using System.IO.Ports; public class BluetoothController : MonoBehaviour { public string deviceName = "MyBluetoothDevice"; public int baudRate = 9600; private SerialPort serialPort; void Start() { string[] ports = SerialPort.GetPortNames(); foreach (string port in ports) { if (port.Contains("Bluetooth") && port.Contains(deviceName)) { serialPort ..
코드 작성using UnityEngine;public class GyroController : MonoBehaviour{ private bool gyroEnabled; private Gyroscope gyro; private Quaternion rot; void Start() { gyroEnabled = EnableGyro(); } private bool EnableGyro() { if (SystemInfo.supportsGyroscope) { gyro = Input.gyro; gyro.enabled = true; return true; } ..
입장조건이 있는 방 만들기 void JoinOrCreateRoom() { RoomOptions roomOption = new RoomOptions(); roomOption.MaxPlayers = 2; roomOption.CustomRoomPropertiesForLobby = new string[] { "difficulty" }; roomOption.CustomRoomProperties = new Hashtable() { { "difficulty", "easy" } }; PhotonNetwork.JoinOrCreateRoom("room name", roomOption, null); } 조건에 맞는 방 참여하기 public void JoinRandomRoom() { Hashtable roomPropertie..
유니티에서 제공하는 Instantiate가 아닌 포톤에서 제공하는 PhotonNetwork.Instantiate로 생성한뒤 Photon Transform View 또는 Photon Animator View 를 달아주게 되면 자동으로 동기화가 이루어집니다. 생성할 Prefab의 위치는 Resource 폴더 안에 있어야합니다. 코드 예시 using UnityEngine; using Photon.Pun; public class MyScript : MonoBehaviourPunCallbacks { public GameObject prefab; void Start() { PhotonNetwork.Instantiate(prefab.name, transform.position, transform.rotation, 0..
For문 for (int i = 0; i < 10; i++) { print("현재 값은 $i"); } Switch문 int grade = 80; switch (grade) { case 90: print("Grade is A"); break; case 80: print("Grade is B"); break; case 70: print("Grade is C"); break; default: print("Grade is not A, B, or C"); break; }
삼항 연산자 A = 조건문 ? : 참일때 : 거짓일때 예시 코드 using UnityEngine; public class TernaryOperatorExample : MonoBehaviour { private int health = 70; void Start() { // 만약 health가 50보다 크면 "건강한 상태"를 출력하고, // 그렇지 않으면 "위험한 상태"를 출력합니다. string healthStatus = (health > 50) ? "건강한 상태" : "위험한 상태"; Debug.Log(healthStatus); } } 예시 코드 2 using UnityEngine; public class TernaryOperatorExample : MonoBehaviour { private bool i..