본문 바로가기
728x90
반응형

HOME🏠310

[UNITY]여러개의 Task 받아서 처리하기(Task.WhenAny/WhenAll) 여러개의 Task 받아서 처리하기 public static Task WhenAny (params Task[] tasks); Task.WhenAny 메서드는 여러 개의 Task 중 하나가 완료될 때까지 대기하는 데 사용된다 tasks 는 비동기 작업(Task) 의 배열로 배열에 있는 작업 중 하나가 완료 될 때까지 대기하고 완료가 되면 Task 의 Task 객체가 반환된다 Task.WhenAny 는 여러 작업중 가장 빨리 완료되는 작업을 처리하거나, 병렬 작업중 하나를 선택하는데 사용한다 Task task1 = SomeAsyncOperation1(); Task task2 = SomeAsyncOperation2(); Task task3 = SomeAsyncOperation3(); Task whenAnyTas.. 2024. 4. 8.
[UNITY]Task.Start/Task.Run 메소드 Task.Start와 Task.Run 는 둘다 비 동기 작업을 시작하는데 사용되는 메소드이다 Task.Start 메소드 public void Start (); public void Start (System.Threading.Tasks.TaskScheduler scheduler); Task.Start 는 새로운 Task 인스턴스를 생성하고 시작하는데 사용된다 기본적으로 TaskScheduler.Current 에서 실행된다 주로 커스텀 스케줄링 로직을 사용하거나 특정 스레드에서 작업을 실행 하려는 경우 사용된다 Task.Factory.StartNew 와 유사한 동작을 한다 Task 생성자를 호출해서 현재 작업을 시작하고 스케줄러에 대한 실행을 예약한다 using System; using System.Thre.. 2024. 4. 8.
[UNITY]Task.ConfigureAwait 메서드 Task.ConfigureAwait 메서드 public System.Runtime.CompilerServices.ConfiguredTaskAwaitable ConfigureAwait (bool continueOnCapturedContext); public System.Runtime.CompilerServices.ConfiguredTaskAwaitable ConfigureAwait (System.Threading.Tasks.ConfigureAwaitOptions options); Task.ConfigureAwait는 사용하면 비동기 작업의 실행 컨텍스트를 제어하여 UI응답성을 향상시키고 데드락을 피하며 성능을 최적화 할 수 있다 비동기 작업이 완료 된 후에 이어지는 코드 블록이 어떤 스레드 컨텍스트에서 실.. 2024. 4. 8.
[UNITY]비동기 작업 : Task 메서드 사용하는 방법 [UNITY]비동기 프로그램 만들기: async / await 비동기 프로그램 만들기: async / await 프로그래밍 방식에는 동기식과 비동기식이 있다 동기식은 순차적인 실행 방식을 의미하고 일반적으로 동기식 작업 방식으로 진행이 된다 비동기식은 동기 j2su0218.tistory.com Task / Task Task 메서드를 사용하기 위해서는using System.Threading.Tasks; 네임스페이스가 필요하다 using System.Threading.Tasks; 비동기 메서드의 반환 형식을 크게 3가지로 나누었을 때 Task 는 작업을 수행하지만 아무 값도 반환하지 않는 비동기 메서드의 경우에 사용하고 Task는 값을 반환하는 비동기 메서드의 경우 사용하고 void 는 이벤트 처리기의 경우.. 2024. 4. 8.
[UNITY]비동기 프로그램 만들기: async / await 비동기 프로그램 만들기: async / await 프로그래밍 방식에는 동기식과 비동기식이 있다 동기식은 순차적인 실행 방식을 의미하고 일반적으로 동기식 작업 방식으로 진행이 된다 비동기식은 동기식과는 달리 여러작업들을 동시에 실행 하는 방식을 말한다 이런 비동기식 처리는 동시에 여러작업을 수행하여 작업이 완료 될 때 까지 기다리지 않고 다음 코드를 실행 할 수 있게 해준다 비동기 프로그래밍은 유니티에서 자주 사용되며, 네트워크 요청, 파일 로딩 등과 같은 작업을 효율적으로 처리할 수 있도록 도와준다 이러한 비동기식 작업은 구조를 정확하게 파악하지 않고 구현 하면 무한 루프, 무한 대기 상태에 빠지게 된다 동기 처리는 실행순서가 보장되지만 속도가 느리고 비동기 처리는 속도가 빠르지만 실행 순서가 보장되지 .. 2024. 4. 5.
[UNITY]파일 선택 다이얼로그 사용하기: EditorUtility.OpenFilePanel 함수 사용법 Unity 에디터 환경에서 파일 선택 다이얼로그를 사용하여 사용자가 원하는 파일을 선택하는 방법 Unity 에서는 게임 또는 앱을 개발하는 동안 사용자에게 파일 선택 기능을 제공해야할 때가 있다 예를 들어 사용자가 특정 파일을 열거나 가져오는 기능이 필요한 경우 EditorUtility.OpenFilePane() 를 사용해서 파일 선택 대화 상자를 열고 사용자가 원하는 파일을 선택 할 수 있게 할 수 있다 string EditorUtility.OpenFilePanel(string title, string directory, string extension) 다음과 같이 사용 할 수 있고 title 은 파일 탐색 대화 상자의 제목, directory 는 파일 탐색 상자가 열릴 때 표시할 기본 디렉토리, ex.. 2024. 4. 2.
[UNITY]포톤(PUN2) 콜백 코드 정리 포톤(PUN2) 콜백 코드 정리 포톤에서 제공하는 콜백함수를 사용하기 위해서는 상단에 using Photon.Pun; 을 선언해주고 MonoBehaviour 를 MonoBehaviourPunCallbacks 로 변경해줌 using Photon.Pun; public class NetworkManager : MonoBehaviourPunCallbacks 크게 사용하는 콜백함수를 정리하면 서버 연결 방 생성하기 방 참여하기 방 만들기/참여 랜덤으로 방 참가하기 방 나가기 다음 기능을 구현할 수 있다 서버 연결하기 PhotonNetwork.ConnectUsingSettings(); Photon Editer 에 설정된 값으로 포톤 사용자들을 서버에 연결 시켜준다고함 public void Connect() => P.. 2024. 4. 2.
[UNITY]포톤(PUN2) - 실습 작업 과정 작업 과정 로비 씬(Lobby) 닉네임이랑 방을 생성하거나 생성되어있는 방에 들어 갈수 있고 방 리스트를 누르면 생성되어 있는 방으로 참여 할 수 있음 이름과 방 번호를 입력 하지 않으면 시작 할 수 없음 - 데이터를 입력하지 않았는데 게임시작 버튼이 동작하는 문제 (해결) 생성된 방의 리스트 목록 가져와서 리스트가 생성되고 삭제되었을 때 포톤에서 제공하는 업데이트 클래스를 사용해서 방 리스트 판넬 생성 하고 삭제 해주기 포톤에서 데이터를 받아서 텍스트 안에 뿌려줌 방 리스트를 누르면 생성되어 있는 방으로 참여 할 수 있음 참여 버튼을 누르면 해당 판넬은 닫히고 선택한 방 값을 텍스트 안에 넣어줌 게임 디자인 하기 , 방 (Room01) 구현 하기 캐릭터의 움직임을 구현, 포톤 뷰를 사용해서 동기화 구현.. 2024. 3. 22.
[UNITY]Photon PUN2(4) - 플레이어 세팅 플레이어 안에 새로운 스크립트(PlayerSetup)를 만들어 준다 그리고 PlayerCtrl과 Camera를 public 으로 선언해준다 public PlayerCtrl PlayerCtrl; public GameObject Camera; 그리고 전에 만들어준 Player 프리팹을 열어서 MainCamera와 PlayerCtrl 설정을 비활성화를 해주었다 PlayerSetup 스크립트 컴포넌트를 넣어주고 다음과 같이 비어있는 오브젝트들을 채워 넣어줬다 그리고 PlayerSetup 스크립트 안에 다음과 같이 함수를 하나 만들어서 플레이어가 생성되면 활성화 될 수 있게 해주었다 //PlayerSetup Script public void IsLocalPlayer(){ PlayerCtrl.enabled = tr.. 2024. 3. 18.
[UNITY]Photon Pun2 (3) - 캐릭터 설정 해주기 플레이어 캐릭터 스크립트(PlayerCtrl)를 만들어서 캐릭터가 움직이도록 만들어준다 using System.Collections; using UnityEngine; public class PlayerCtrl : MonoBehaviour { [Header("Player Animaion")] public Animator playerAnimation; [Space] private float speed=10f; private float jumpForce = 5f; [Space] private Rigidbody characterRgb; private void Start() { characterRgb = GetComponent(); } private void Update() { if(Input.GetKeyDow.. 2024. 3. 18.
[UNITY]Photon PUN2 (2) - 서버 만들기 스크립트 작성 하이어라키 안에 새로운 오브젝트를 만들어 주고 새로운 스크립트(RoomManager.sc)를 하나 생성해준다 스크립트를 열어서 PUN 라이브러리를 사용하기 위해서 상단에 using Photon.Pun; 를 선언해주고 using Photon.Pun; MonoBehaviour 를 MonoBehaviourPunCallbacks 로 변경해준다 public class RoomManager : MonoBehaviourPunCallbacks 이제 PhotonNetwork 와 연결해주기 위해서 Start() 함수 안에 ConnectUsingSettings() 를 작성해 주었다 void Start() { Debug.Log("connecting..."); PhotonNetwork.ConnectUsingSettings();.. 2024. 3. 18.
[UNITY] Photon PUN 2 (1) - 포톤 계정 만들기 Photon PUN 2- 포톤 계정 만들기 (1) Photon Unity Networking (PUN) 멀티플레이어 게임용 유니티 패키지입니다. 유연한 매치메이킹을 통해 플레이어들은 객체들이 네트워크를 통해 동기화될 수 있는 룸으로 이끌어 줍니다. RPC, 사용자 정의 속성 또는 "저 수준" Photon 이벤트들은 이 기능의 일부입니다. 빠르고 (선택적으로) 신뢰할 수 있는 커뮤니케이션은 전용 Photon 서버를 통해 이루어지므로 클라이언트들은 1 대 1 연결이 필요하지 않습니다. PUN 2 FREE 받기 PUN 2 - FREE | 네트워크 | Unity Asset Store Get the PUN 2 - FREE package from Photon Engine and speed up your game d.. 2024. 3. 18.
[UNITY] AddForce , AddTorque,ForceMode 의 종류 힘을 주는 방법은 AddForce 와 AddTorque 두 가지가 존재한다 AddForce 정의 된 축을 기준으로 게임 오브젝트를 미는 힘 Vector의 방향과 크기로 힘을 준다 m_Rigidbody.AddForce(transform.up * m_Thrust); AddTorque 정의 된 축을 기준으로 게임 오브젝트를 회전시키는 힘 rb.AddTorque(transform.up * torque * turn); ForceMode는 힘을 주는 방식을 말한다 가속을 추가해주는 방식, 움직이고 있는 중에 사용하기 적합 ForceMode.Force : 무게를 적용함 ForceMode.Acceleration : 무게를 적용하지 않음 순간적으로 가속을 추가해주는 방식, 정지상태에서 이동을 시작하려 할때 사용하기 적합.. 2024. 3. 18.
[MacOS]개발자 맥북(Mac) 세팅 과정 개발자 맥북(Mac) 세팅 과정 이 글은 내가 다음에 맥북을 사거나 했을 때 쉽게 개발자 세팅을 하기위해서 작성한 글이다 처음 IOS 빌드 해보려고 맥북 샀는데 windown 랑 너무 달라서 노트북을 샀는데 손이 안가는 상황이 올까봐.. 어떻게든 써보려고 노력중이다. 다행이 조금씩 적응중임.. 1. Homebrew 설치 Mac용 패키지 관리 애플리케이션 으로 프로그램을 설치 할 때 설치 파일을 다운로드 받은 후 설치 파일을 실행해서 설치하는것이 아닌 터미널에서 명령어를 사용해서 프로그램을 설치 할 수 있다 Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 구글에서 homebrew 라고 치면 사이트가 나온다 그리고 위에 있는 명령어를 복.. 2024. 3. 8.
[Mac OS] 맥북 JAVA 환경 변수 설정하는 방법 자바 설치 오라클 홈페이지에서 자바를 다운받아 설치 해준다 https://www.oracle.com/java/technologies/downloads/#jdk20-mac Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com 설치를 해주고 재부팅을 해주고 자바가 정상적으로 설치가 되었는지 확인 하기 위해서 터미널을 열어서 Java -version 이라는 명령어를 입력하면 버전이 확인 가능하다 설치된 jdk 리스트 확인하기 터미널에서 다음 명령어를 작성해주면 JAVA폴더.. 2024. 3. 2.
구글 콘솔 플레이 , 개인정보처리방침 사이트 만들기 구글 콘솔 플레이 , 개인정보처리방침 사이트 만들기 그냥 구글 플레이 올리는거 테스트만 해보고싶은데 개인정보처리방침이랑 앱설정을 해주어야한다... 기존에 개인정보처리방침을 만들어주는 사이트가 서비스를 종료하면서 pdf으로 지침만드는 방법만 제공하게 되었다.. 사람들은 기존에 제공 해주던 사이트가 서비스 종료하면서 타겟층에 만 13세 미만을 체크 안한다고 적혀있길래 나도 그렇게 하려고 했는데 체크 안해도 안되서.. 어떻게 해야하나 계속 찾아보다가 다음 사이트를 찾게되었다 국내 유일 법률문서 자동작성 · 서명 · 통합 관리 플랫폼 모바일에서도 쉽고 간편하게 법률문서 자동작성 및 원스톱 전자서명 가능! 실시간 온라인 공유/수정으로 업무 효율은 UP! 클라우드 기반의 안전한 보관/관리까지 lawform.io 사.. 2024. 2. 25.
[UNITY]Photon Cloude, 멀티 게임 구현하기(3) 보호되어 있는 글 입니다. 2024. 2. 23.
[UNITY]Photon Cloude, 멀티 게임 구현하기(2) 보호되어 있는 글 입니다. 2024. 2. 23.
[UNITY]Photon Cloude, 멀티 게임 구현하기(1) 보호되어 있는 글 입니다. 2024. 2. 14.
[UNITY]Google Play Console 계정 만들기 & 앱(.abb) 올리기 빌드한 안드로이드 앱을 PlayStore에 올리기 위해서는 구글 플레이 콘솔( Google Play Console )에서 관리를 해주어야 한다 https://play.google.com/console/about/ Google Play Console | Google Play Console 앱과 게임이 성장할 수 있도록 사용자에게 도달하고 사용자 참여를 유도하는 데 도움이 될 도구, 프로그램, 통계를 이용하세요. play.google.com Google Play Console 계정 만들기 개발자 등록비는 25달러 이고 구글 측에 납부하는 수수료이다 한번 결제시 평생 이용 할 수 있음 구매하고 약관 까지 진행되면 Google Play Console 화면으로 들어온다 앱을 게시라혀면 개발자 계정 설정을 완료 해.. 2024. 2. 14.
[UNITY]Error : "Android AppBundle 이 서명되지않았습니다" 해결하기 "Android AppBundle 이 서명되지않았습니다" 해결하기 구글 플레이 콘솔에 빌드한 .aab 파일을 올렸는데 다음과 같이 [ Android AppBundle 이 서명되지않았습니다 ] 라고 나오면서 앱이 등록 되지 않는다면 1 ) 유니티 안에서 Keystore 을 생성해 주었는지 확인을 하자 [유니티Unity3D]Keystore(키스토어) 생성하기 Keystore(키스토어) 생성하기 유니티를 빌드 하기 위해서는 반드시 Keystore를 생성해주어야하는데 생성하는데 복잡하지 않아서 정리 해보려고 한다. File->Build Settings으로 들어가서 Build Settings 에서 P j2su0218.tistory.com 2) Java Keystore 의 키 내보내기 및 업로드 1️⃣ 암호화 공개.. 2024. 2. 13.
[UNITY] ERROR : Job failed with exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. Job failed with exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Insecure connection not allowed at (wrapper managed-to-native) UnityEngine.Networking.UnityWebRequest.BeginWebRequest(UnityEngine.Networking.UnityWebRequest) Player Setting > Player > Other Setting > Allow Downloads over HTTP를 Al.. 2024. 2. 11.
[UNITY]Android SDK is missing required platform API Android SDK 업데이트 하기 Android 빌드를 하다보면 Target API level 을 선택해서 빌드를 해야하는데 사용중인 Unity 버전에서 선택한 Target 이 없는 경우, 다음과 같이 Android SDK is missing required platform API 라는 문제가 발생하는 경우가 있다 이 문제는 현재 Unity 환경에서 API level 34를 타겟팅하기 위한 SDK 버전이 없다는 뜻이다 다음과 같이 Update Android SDK 랑 Use Highest Intalled Update Android SDK 를 선택하면 다음과 같이 PowerShell 이 열리면서 설치를 하지만 aab 빌드를 하면 위와 같은 버그가 생기면서 빌드가 되지 않는다 Update Android S.. 2024. 2. 8.
[UNITY]Error : Configure project :launcherWARNING: The option setting 'android.enableR8=false' is deprecated.It will be removed in version 5.0 of the Android Gradle plugin.You will no longer be able to disable R8 문제 해결 방법 보호되어 있는 글 입니다. 2024. 2. 8.
[UNITY]Errors:Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details 에러 해결과정 Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details > Configure project :launcher WARNING: The option setting 'android.enableR8=false' is deprecated. It will be removed in version 5.0 of the Android Gradle plugin. You will no longer be able to disable R8 Gradle 데몬을 시작하면 호환되지 않는 데몬 1개를 재사용할 수 없습니다. 자세한 내용은 --status를 사용하세요. > 프로젝트 구성 :런처 경고: 'android.enabl.. 2024. 2. 6.
[UNITY]Play In-App Update (인앱 업데이트) 방법 Play In-App Update (인앱 업데이트) 방법 패키지 다운받기 https://developers.google.com/unity/packages?hl=ko#play_in-app_update Unity용 Google 패키지 살펴보기 | Google for Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English Unity용 Google 패키지 살펴보기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Unity용 Google developers.google.com 업데이트의 종류는 두 가지가 있는데 유연한 업데이트와 즉시 업데이트가 있다 1. 유연한 업데이트 원활한 상태 모니터링 기능과 함께 백그라운.. 2024. 2. 3.
Progressive Web App 셋팅 & 앱 발행 방법 프로젝트 생성 방법 기존 프로젝트를 pwa 형식으로 변경하는 방법이 존재 하지 않기 때문에 새 프로젝트를 생성해주고 기존 코드를 복사 해주는 방식을 사용해야한다 터미널 안에서 다음 코드 작성후 세 프로젝트 생성 해준다 npx create-react-app '프로젝트 명' --template cra-template-pwa PWA 파일의 조건은 생성된 파일안에 manifest.json(앱 설정 파일)과 service-worker.js 파일이 들어있어야한다 시작할 때 PWA 형태로 파일을 생성해주면 자동으로 생성 되어있음 manifest.json 설정 앱의 설정 파일로 앱의 이름, 아이콘, 시작 url, 테마 색상, 배경 색상의 기본 설정을 다룰 수 있다 service-worker.js 설정 service-w.. 2024. 2. 2.
[React] useTranstion ,useDeferredValue 사용하기 state 1,state 2, state 3 가 존재하는 경우, 변경할 때마다 재렌더링 되는 것이 아니라 마지막에 변경되는 state 값 이후에 재렌더링 해주는 것을 batching 이라고 한다 하지만 ajax, setTimeout 내부라면 baching이 일어나지 않는다 React 18 버전 이후부터는 이러한 성능 문제를 해결하기 위해서 useTranstion 과 useDeferredValue 기능이 나오면서 위의 문제를 해결가능하게 되었다 useTranstion import {useTransition} from 'react' 다음 코드는 10000개의 배열 안에 input 값을 출력 해준다 let a = new Array(10000).fill(0) function App() { let [name, s.. 2024. 2. 2.
[React] memo / useMemo 사용하기 memo props가 변할 때만 렌더링을 해준다 memo를 사용하기 위해서는 import { memo } from "react"; 함수를 improt 해준다 그리고 필요할 때 재 렌더링 할 컴포넌트를 memo 함수를 사용해서 컴포넌트를 생성해주어야 한다 //memo 사용안함 function Child(){ console.log('다시불러와지나') return child } //memo 사용 const Child = memo(function Child(){ console.log('다시불러와지나') return child }) memo 사용하기 전 memo 사용하기 후 기존의 props와 신규 props를 비교해서 props의 값이 변했으면 재렌더링 해주는 기능으로 너무 많이 사용하면 비교를 계속 하게 되면.. 2024. 2. 2.
[React] memo / useMemo 사용하기 memo props가 변할 때만 렌더링을 해준다 memo를 사용하기 위해서는 import { memo } from "react"; 함수를 improt 해준다 그리고 필요할 때 재 렌더링 할 컴포넌트를 memo 함수를 사용해서 컴포넌트를 생성해주어야 한다 //memo 사용안함 function Child(){ console.log('다시불러와지나') return child } //memo 사용 const Child = memo(function Child(){ console.log('다시불러와지나') return child }) memo 사용하기 전 memo 사용하기 후 기존의 props와 신규 props를 비교해서 props의 값이 변했으면 재렌더링 해주는 기능으로 너무 많이 사용하면 비교를 계속 하게 되면.. 2024. 2. 2.
728x90
반응형