유니티 코드 모음 | 보충 영상: 유니티 – 벡터 실습 (코드 모음) 답을 믿으세요

당신은 주제를 찾고 있습니까 “유니티 코드 모음 – 보충 영상: 유니티 – 벡터 실습 (코드 모음)“? 다음 카테고리의 웹사이트 th.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://th.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 GMCP 웨어하우스 이(가) 작성한 기사에는 조회수 20회 및 좋아요 없음 개의 좋아요가 있습니다.

유니티 코드 모음 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 보충 영상: 유니티 – 벡터 실습 (코드 모음) – 유니티 코드 모음 주제에 대한 세부정보를 참조하세요

유니티 – 벡터 실습 보충 영상입니다.
벡터의 덧셈\u0026뺄셈, 스칼라의 곱, 길이, 정규화, 내적, 외적 코드 짜는 영상 모음 입니다.
궁금한 점이나 의견은 고정 댓글에 있는 메일이나 댓글, 토론창으로 문의해주시길 바랍니다.
#유니티#삼각함수#게임수학#수학#unity#vector#보충#실습#응용#game#math#gmcp#warehouse

유니티 코드 모음 주제에 대한 자세한 내용은 여기를 참조하세요.

자주 쓰는 유니티 코드 모음 – Wm뮤

자주 쓰는 유니티 코드 모음. 모카쨩 2020. 7. 9. 15:27. 뭔가 유용한데 정리하기 애매한것들. 나중에 정리하자. 씬 어딘가에 있는 컴포넌트를 불러옴.

+ 더 읽기

Source: wmmu.tistory.com

Date Published: 6/6/2022

View: 4237

유니티 스크립트 사전 , 기능 코드 모음 – 상승남의 이야기

일시정지, 다시시작 만들기 https://prosto.tistory.com/93 화면 재시작(게임제시작 Retry경우) using UnityEngine.

+ 여기에 표시

Source: sghstartup.tistory.com

Date Published: 1/3/2021

View: 3084

[Unity] 유용한 정보 모음 (기능 / 스크립트 구분) – Ver. 2019.11.24

기능. 충돌 (Trigger). 유니티 충돌을 위한 기본 설정. Rigbody가 적어도 한쪽에 있어야 하고. Trigger함수가 있는 스크립트를 컴포넌트로 가지고 …

+ 여기를 클릭

Source: wolfy.tistory.com

Date Published: 12/8/2021

View: 438

유니티 플레이어 이동 관련 코드 모음 – 작은 시작

유니티 플레이어 이동 관련 코드 모음. by startSmall 2020. 8. 25. *공부하는 중인 아마추어의 의견이니 좋은 방법이 있으면 댓글 부탁드리겠습니다. 1.Vector.

+ 여기에 더 보기

Source: lazypaint.tistory.com

Date Published: 3/27/2022

View: 4221

유니티 – 유용한 정보, 링크 모음 – Rito15

유니티 스크립트 모음 … 유니티 주요 기능 소개, 강좌. 유니티 코리아 유튜브. https://www.youtube.com/c/UnityKoreaHi/playlists. 유니티 C# 소스코드.

+ 여기에 더 보기

Source: rito15.github.io

Date Published: 3/6/2021

View: 2088

Unity – 게임 제작용 테크닉 모음

캐릭터 이동시키기(WASD) 1. 스크립트에 새 C# 스크립트 만들기 > PlayerMovement를 만든다. 2. 스크립트 내용을 다음과 같이 작성using UnityEngine; …

+ 여기에 자세히 보기

Source: devdata.tistory.com

Date Published: 4/16/2021

View: 2357

유니티 함수 모음(배운 것) – velog

주요 오버로딩 함수. Awake() : 스크립트가 실행될 때 한 번만 호출되는 함수, 주로 게임의 상태 값 또는 변수의 초기화에 사용 …

+ 여기에 보기

Source: velog.io

Date Published: 12/10/2022

View: 4534

티스토리 – J데빌 코드 모음(/-_-)/

J데빌 코드 모음(/-_-)/. jdevil.tistory.com/m. J데빌 개발 블로그 입니다 … 유니티 키보드와 마우스 입력 골드메탈 유니티 강좌 보고 정리한 내용입니다. 1.

+ 여기에 더 보기

Source: jdevil.tistory.com

Date Published: 4/25/2021

View: 9318

주제와 관련된 이미지 유니티 코드 모음

주제와 관련된 더 많은 사진을 참조하십시오 보충 영상: 유니티 – 벡터 실습 (코드 모음). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

보충 영상: 유니티 - 벡터 실습 (코드 모음)
보충 영상: 유니티 – 벡터 실습 (코드 모음)

주제에 대한 기사 평가 유니티 코드 모음

  • Author: GMCP 웨어하우스
  • Views: 조회수 20회
  • Likes: 좋아요 없음
  • Date Published: 2021. 10. 27.
  • Video Url link: https://www.youtube.com/watch?v=nOUQMWPLuNQ

Wm뮤 :: 자주 쓰는 유니티 코드 모음

뭔가 유용한데 정리하기 애매한것들

나중에 정리하자

씬 어딘가에 있는 컴포넌트를 불러옴. 매니저컴포넌트같은걸 다룰때 좋음. 할당 안해도 되니까

부하가 크니 사용시 주의

FindObjectOfType<클래스명>();

모든 자식들중에 해당 게임오브젝트가 존재하는지 검색함

단 Transform이 달려있어야함

System.Array.Find(transform.GetComponentsInChildren(), x => x.name == “게임오브젝트명”)

태그검색

GameObject.FindGameObjectsWithTag(“태그명”);

문자열로 레이어 체크

gameObject.layer == LayerMask.NameToLayer(“레이어명”)

카메라 레이어 토글

var layerIndex=LayerMask.NameToLayer(“레이어명”); camera.cullingMask ^= 1 << layerIndex; 컴포넌트 달린 오브젝트 생성 var gameObject = new GameObject(nameof(SampleClass), typeof(SampleClass)); 컴포넌트를 활성화 하거나 비활성화할때 GetComponent().enabled = false;

유니티 에셋 파일 변경시 호출

#if UNITY_EDITOR 클래스명() { EditorApplication.projectChanged += GetFileData; } void GetFileData() { //실행문 } #endif

프리팹 저장

var target_ClassName = target as ClassName; if (PrefabUtility.GetPrefabAssetType(target_ClassName.gameObject) != PrefabAssetType.NotAPrefab) { PrefabUtility.SavePrefabAsset(target_ClassName.gameObject); }

텍스트 일부분만 컬러주기, 리치텍스트

Rich Text가 적용되어 있어야 하는데 일반적으론 적용되어있으니 상관없음

텍스트컴포넌트.richText = true; 텍스트컴포넌트.text= “빨간색 초록색 반투명파란색 굵게 기울임 사이즈50 매터리얼2번 ” ;

버튼을 누르면 URL실행

if (GUILayout.Button(“URL실행”)) { Application.OpenURL(“https://wmmu.tistory.com/”); }

인스펙터의 값을 글로벌로 저장할때 ScriptableObjects를 사용

스크립트테이블오브젝트

using UnityEngine; [CreateAssetMenu(fileName = “Data”, menuName = “ScriptableObjects/SpawnManagerScriptableObject”, order = 1)] public class SpawnManagerScriptableObject : ScriptableObject { public string prefabName; public int numberOfPrefabsToCreate; public Vector3[] spawnPoints; }

EditorWindow

#if UNITY_EDITOR using UnityEngine; using UnityEditor; [InitializeOnLoad] class TooltipWindow : EditorWindow { static string ShowToolTip_HashKey = “TooltipWindow_ShowToolTip”; static bool ShowToolTip_DefaultValue = true; static TooltipWindowScriptableObject tooltipWindowScriptableObject; static TooltipWindow() { EditorApplication.update -= firstDraw; EditorApplication.update += firstDraw; } public static void firstDraw() { EditorApplication.update -= firstDraw; if ((EditorApplication.isPlaying==false)&&(EditorPrefs.GetBool(ShowToolTip_HashKey, ShowToolTip_DefaultValue))) { Init(); } } [UnityEditor.MenuItem(“CustomWindow/Control Panel”)] public static void Init() { GetWindow(false,”윈도우 이름”); } void OnGUI() { csvScriptableObject = AssetDatabase.LoadAssetAtPath($”Assets/TooltipWindowScriptableObject.asset”); EditorPrefs.SetBool(ShowToolTip_HashKey, GUILayout.Toggle(EditorPrefs.GetBool(ShowToolTip_HashKey, ShowToolTip_DefaultValue), “Show at Startup”)); } }

string.IsNullOrEmpty(“문자열”)

에디터 맨 마지막에 표시

GUILayout.BeginArea(new Rect(0,Screen.height- GUI.skin.box.lineHeight- GUI.skin.window.border.top, Screen.width, GUI.skin.box.lineHeight)); { } GUILayout.EndArea();

이미지 표시

//이미지표시 { var img = scriptableObject.img; var hei= Screen.width * (img.rect.height / img.rect.width); GUI.DrawTexture(new Rect(0, 0, Screen.width, hei), img.texture); GUILayout.Space(hei); }

폴더 이름 반환

var folderPath=AssetDatabase.GetAssetPath(object형폴더); string[] fileNames = AssetDatabase.GetSubFolders(folderPath);

폴더 아래의 Sprite이름들 반환

{ var folderPath=AssetDatabase.GetAssetPath(object형폴더); string[] guidFilePathSprites = AssetDatabase.FindAssets($”t:{typeof(Sprite).Name}”, new string[] { folderPath }); Sprite[] sprites = new Sprite[guidFilePathSprites.Length]; for (int i = 0; i < sprites.Length; i++) { var path=AssetDatabase.GUIDToAssetPath(sprites[i]));//Assets/FileName.Sprite 같은식으로 반환 sprites[i]=AssetDatabase.LoadAssetAtPath(path); } }

정적 업데이트

[InitializeOnLoad] public class MyWindow : EditorWindow { static MyWindow() { EditorApplication.update -= StaticUpdate; EditorApplication.update += StaticUpdate; } static long lastTime = 0; public static void StaticUpdate() { if ((System.DateTime.Now.Ticks-lastTime)/10000000 >= 3)//3초마다 동작 { //실행문 lastTime = System.DateTime.Now.Ticks; } } }

현재시간

long second= System.DateTime.Now.Ticks / 10000000 % 60; long minute= System.DateTime.Now.Ticks / 10000000/60 % 60; long hour= System.DateTime.Now.Ticks / 10000000/60/60 % 24; System.DateTime.NowGetHour(System.DateTime.Now) //24시는 0으로 표기되고 23시는 23시로 나온다 DateTime Date = DateTime.UtcNow.AddYears(-10) //10년전 System.DateTime.Now //결과:2021-06-08 PM 6:00:44 //Unix시간, 유닉스 타임 스탬프 (UnixTimeStamp) //DateTime버전 길지만 변환이 쉬움 DateTime date=DateTime.Now; (Int32)(date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds //결과: 2021-1-16 (6:12:31 GMT) => 1610788351 //역변환 DateTime date= new DateTime(1970, 1, 1).AddSeconds(unixTime); //결과: 2021-1-16 (6:12:31 GMT) => 1610788351 //DateTimeOffset버전 짧지만 변환이 어려움 DateTimeOffset.Now.ToUnixTimeSeconds(); var time = System.DateTime.Now; Debug.Log($”[{time.Hour.ToString(“D2”)}:{time.Minute.ToString(“D2”)}:{time.Second.ToString(“D2”)}.{time.Millisecond.ToString(“D3”)}]“); //굵은 글씨로 현재시간 시분초(소숫점 포함) 표기 //결과 : [18:17:30.428]

ticks를 datetime으로

long ticks = System.DateTime.UtcNow.Ticks; System.DateTime dateTime = new System.DateTime(ticks); Debug.Log(dateTime);

dateTime to int

기준일로부터 68년간 유효하다 (최대 69년)

//68년간 유효 long offsetYears = System.DateTime.MinValue.AddYears(1953).Ticks; Debug.Log($”offsetYears: {offsetYears}”); long ticks = System.DateTime.Now.Ticks; Debug.Log($”ticks: {ticks}”); int ticksInt = (int)((ticks- offsetYears)/ 10000000); Debug.Log($”ticksInt: {ticksInt}”); long intToTicks = (long)ticksInt * 10000000+ offsetYears; Debug.Log($”intToTicks: {intToTicks}”); System.DateTime dateTime = new System.DateTime(intToTicks); Debug.Log($”dateTime: {dateTime}”);

datetime 문자열 변환

var dateTimeString = dateTime.ToString(); dateTime= System.DateTime.Parse(dateTimeString);

DateTime을 0~1 float로 변환

//오래될수록 1에 가까워짐

//샘플코드는 최대 한달

//7일전 = 0.2258064

//15일전 = 0.483871

//31일전 = 1

var lastUtcTime = System.DateTime.UtcNow.AddDays(-7); //7일전 접속 long min = System.DateTime.MinValue.Ticks; long max = System.DateTime.MinValue.AddMonths(1).Ticks; //최대 1달 long normalizeTime = System.Math.Max((System.DateTime.UtcNow – lastUtcTime).Ticks, min); normalizeTime = System.Math.Min(normalizeTime, max); Debug.Log(“마지막 접속으로부터 {(float)(((double)normalizeTime) / max)}개월 지남”);

모든 씬에서 단 한번만 자동생성되는 오브젝트

public class GameManager : MonoBehaviour { static GameObject gameManager; static void CreateInstance() { if (gameManager == null) { DontDestroyOnLoad(new GameObject(nameof(GameManager), typeof(GameManager))); //nameof가 오브젝트명이고 typeof가 addcomponant } } static GameManager() { if(Application.isEditor==false) { CreateInstance(); } #if UNITY_EDITOR if (UnityEditor.EditorApplication.isPlaying) { CreateInstance(); } #endif }

열닫 가능한 코드

#region 주석 #endregion

웹컬러 변환

string webColor = $”#{ColorUtility.ToHtmlStringRGB(Color.red)}”; //webColor = #FF0000 string webColorRGBA = $”#{ColorUtility.ToHtmlStringRGBA(Color.red)}”; //webColor = #FF0000FF Color color; ColorUtility.TryParseHtmlString(webColor, out color); //color = RGBA(1.000, 0.000, 0.000, 1.000)

에디터 모드에서도 MonoBehaviour를 동작하게 함

update나 start이런 함수도 작동

[ExecuteInEditMode]

데이터 타입 이름 구한거

Debug.Log($”bool: {typeof(bool).Name}”); //Boolean Debug.Log($”char: {typeof(char).Name}”); //Char Debug.Log($”string: {typeof(string).Name}”); //String Debug.Log($”short: {typeof(short).Name}”); //Int16 Debug.Log($”int: {typeof(int).Name}”); //Int32 Debug.Log($”long: {typeof(long).Name}”); //Int64 Debug.Log($”float: {typeof(float).Name}”); //Single Debug.Log($”double: {typeof(double).Name}”); //Double

배열을 콤마가 붙은 문자열로 반환

string strData = $”({string.Join(“,”, 배열데이터)})”;

string형이 아닌 배열일때

string strData = $”({string.Join(“,”, Array.ConvertAll(배열데이터, x => x.ToString()))})”;

하이어라키의 해당 오브젝트의 자식계층에서 최하위로 설정함, 부모는 변하지 않음

transform.SetAsLastSibling();

리플렉션으로 애니메이션 윈도우 접근

var animationWindowType = System.Type.GetType(“UnityEditor.AnimationWindow,UnityEditor”); var animationWindow = Resources.FindObjectsOfTypeAll(animationWindowType)[0];

마우스에 대고있는 윈도우 이름

var mouseOverWindow = EditorWindow.mouseOverWindow; if (mouseOverWindow != null) { Debug.Log(“mouseOverWindow: ” + mouseOverWindow.GetType().ToString()); }

폰이 스스로 종료되지 않도록

Screen.sleepTimeout = SleepTimeout.NeverSleep; //네버슬립모드

백그라운드에서도 동작함

Application.runInBackground=true;

TextUI의 적절한 가로 사이즈, 캐릭터의 위치를 구할때 가아아아끔씩 쓴다

GetComponent().preferredWidth

씬에디터상에 박스를 표시

//에디터상에서 박스위치 표시할때 사용 private void OnDrawGizmos() { Gizmos.DrawWireCube(borderCenter, borderSize); } public Vector3 borderCenter = Vector3.zero; public Vector3 borderSize = new Vector3(200,100,200);

코루틴이 동작중인지 체크

IEnumerator preCoroutine; void StartMusic() { if (preCoroutine != null) { StopCoroutine(preCoroutine); } preCoroutine = MusicEnd(); Debug.Log(“음악시작”); StartCoroutine(preCoroutine); } IEnumerator MusicEnd() { yield return new WaitForSeconds(10f); Debug.Log(“음악이 종료됨”); }

코루틴이 동작중인지 체크2

v1

더보기 IEnumerator preReset; void Reset() { if ((preReset == null)||((preReset.Current.GetType()==typeof(int)) &&((int)preReset.Current == 0)))//Current의 타입검사도 필요함 { preReset = ResetCo(); StartCoroutine(preReset); } } IEnumerator ResetCo() { yield return 0;//종료 }

v2

더보기 IEnumerator preReset; void Reset() { if ((preReset == null) || ((preReset.Current is int current) && (current == 0)))//Current의 타입검사도 필요함 { preReset = ResetCo(); StartCoroutine(preReset); } } IEnumerator ResetCo() { yield return 0;//종료 }

v3

더보기 IEnumerator preReset; void Reset() { if (preReset?.Current as string == “End”)//Current의 타입검사도 필요함 { preReset = ResetCo(); StartCoroutine(preReset); } } IEnumerator ResetCo() { yield return “End”;//종료 }

frame이 10 이상이 될때까지 대기

IEnumerator Example() { yield return new WaitUntil(() => frame >= 10); Debug.Log(“프레임이 10 이상임”); }

비동기 함수가 끝날때까지 대기

IEnumerator LoadSpritesCo() { { var co = GetFolderToSpriteFilesCo(folderPath); StartCoroutine(co); yield return new WaitUntil(() => co.Current.GetType() == typeof(Sprite[])); sprites = (Sprite[])co.Current; } }

IEnumerator 내부에서 코루틴 종료

IEnumerator SampleCo() { Debug.Log(“코루틴 실행중”); yield break; Debug.Log(“코루틴이 종료되어 실행할수 없는 문구”); }

IEnumerator 반환값 예제

IEnumerator TestCo() { //반환값 null yield return new WaitForSeconds(10); //반환값 UnityEngine.WaitForSeconds yield return 0; //반환값 0 yield break; //반환값 0 }

배속설정, 디버깅할때 유용하더라

Time.timeScale=2;

싱글톤에서 최상위 부모를 불러올때 static MainSystem mainSystemPrivate; public static MainSystem mainSystem { get { if (mainSystemPrivate == null) { mainSystemPrivate = FindObjectOfType(); } return mainSystemPrivate; } }

팝업창을 띄움, 에디터 전용

#if UNITY_EDITOR [UnityEditor.InitializeOnLoad] public class Class : MonoBehaviour { static Class() { UnityEditor.EditorUtility.DisplayDialog(“제목”, “내용”, “네”, “아니요”); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { } } #endif

인스턴트 SE

public void InstantiateSE(AudioClip clip) { if (clip==null) { Debug.Log(“clip==null”); return; } var gameObject = new GameObject($”SoundEffect({clip.name})”); var audioSource = gameObject.AddComponent(); audioSource.clip = clip; audioSource.Play(); Destroy(gameObject, audioSource.clip.length + 3f); DontDestroyOnLoad (gameObject); }

유니티 버전

Application.version

Predicate 샘플

public static class Array { public static int[] FindIndexAll(T[] array, System.Predicate match) { var indexList = new List(); for (int i = 0; i < array.Length; i++) { if (match.Invoke(array[i])) { indexList.Add(i); } } return indexList.ToArray(); } } // Start is called before the first frame update void Start() { var strTest = new string[] { "A", "B", "C", "A", "B" }; var indexes = Array.FindIndexAll(strTest, x => x == “A”); Debug.Log(string.Join(“,”,indexes)); //0,3을 반환 }

현재 언어가 영어인지

if(Application.systemLanguage == SystemLanguage.English)

인풋필드가 활성화 되어있는지

if((InputField!=null)&& (InputField.isFocused)) { }

스크린사이즈 변경

private void Awake() { if (Debug.isDebugBuild) { var hei = 480; Screen.SetResolution(Screen.width * hei / Screen.height, hei, true); } }

fps측정

float fps = 60; private void OnGUI() { fps = Mathf.Lerp(fps, (1 / Time.deltaTime), 0.05f); GUI.Box(new Rect(100, 0, 200, 24), “FPS: ” + (int)fps); }

스크롤뷰의 콘텐츠 위치를 항상 아래쪽으로 잡을때

scrollRect.verticalScrollbar.value = 0;

이름으로 블렌드 쉐이프 설정

var skinnedMeshRenderer = GetComponent(); var blendShapeIndex=skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(“ShapeKeyName”); skinnedMeshRenderer.SetBlendShapeWeight(blendShapeIndex, weight);

마우스 위치 표시

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { Debug.DrawLine(ray.origin, hit.point,Color.red); } else { Debug.DrawLine(ray.origin, ray.origin + ray.direction * 5); }

자식리스트를 불러옴

//켜진것만 var childList = new List(); for (int i = 0; i < transform.childCount; i++) { var child = transform.GetChild(i).gameObject; if (child.activeInHierarchy) { childList.Add(child); } } //전부 var childList = new List(); for (int i = 0; i < transform.childCount; i++) { childList.Add(transform.GetChild(i).gameObject); } uuid 빌드조건에 따라 쉽게 바뀌니 주의 안드로이드면 키스토어만 바뀌어도 기준값이 바뀌고 애플이면 xcode에서 직접 빌드했는지 아닌지에 따라서도 바뀐다 SystemInfo.deviceUniqueIdentifier 자주쓰는 애니메이션 이벤트 public void InstantiateSE(AudioClip clip) { if (clip==null) { Debug.Log("clip==null"); return; } var gameObject = new GameObject($"SoundEffect({clip.name})"); var audioSource = gameObject.AddComponent(); audioSource.clip = clip; audioSource.Play(); Destroy(gameObject, audioSource.clip.length + 3f); }

scrollRect(Scroll Rect) 스크롤좌표 초기화

scrollRect.horizontalNormalizedPosition = 0f; scrollRect.verticalNormalizedPosition = 0f;

변수가 변경될경우 이벤트 호출

public IEnumerator IndexChengedChecker() { while (true) { var indexPrevious = index; yield return new WaitUntil(() => index != indexPrevious); //상태 변경됨 //event.Invoke(); } }

GPGS토큰

string googleIdToken = null; string googleAccessToken = null; if (PlayGamesPlatform.Instance.IsAuthenticated()) { googleIdToken = PlayGamesPlatform.Instance.GetIdToken(); //googleIdToken = ((PlayGamesLocalUser)Social.localUser).GetIdToken(); 이거도 된다고는 함 googleAccessToken = PlayGamesPlatform.Instance.GetServerAuthCode(); } else { Debug.LogError(“GPGS에 연결되어있지않아 토큰을 받아올수 없음”); } //ID토큰은 공개적인거고 Access토큰은 비공개적인것인듯하다(불확실)

최대값을 지정 해 줌으로서 min값을 구할때 쓸 수 있다

long minScore = long.MaxValue;

버튼을 누른거로 쳐줌

GetComponent

유니티 스크립트 사전 , 기능 코드 모음

728×90

반응형

일시정지, 다시시작 만들기

https://prosto.tistory.com/93

화면 재시작(게임제시작 Retry경우)

using UnityEngine.SceneManagement; 추가 SceneManager.LoadScene(0); //0또는 실제 신의 이름 기입

예시

public void GameRetry()

{

SceneManager.LoadScene(0); //0또는 실제 신의 이름 기입

}

buildSetting에 씬을 추가 및 설정을 해준다.

숫자 , 생성(콤마) 1000 → 1,000

int 형을 문자열로 변경해준다.

자릿수마다 콤마를 생성해준다.

string.Format(“{0:n0}”, 실제값 )

예시

scoreText.text = string.Format(“{0:n0}”,playerLogic.score )

게임오브젝트 삭제 구현 (슈팅게임 총알 삭제)

private void OnTriggerEnter2D(Collider2D collision) {

if(collision.gameObject.tag == “BorderBullet”)

{

Destroy(gameObject);

}

}

애니메이션 이동 구현 (에니메이터 편집)

에니메이터에서 에니메이션을 움직이게 하려면 파라미터를 추가하여 편집을 해준다.

백버튼 한번 종료

void Update()

{

if(Input.GetKeyDown(KeyCode.Escape))

{

Application.Quit();

}

}

백버튼 두번 종료

int ClickCount = 0;

void Update()

{

/* press to start

if (Input.GetMouseButtonDown(0))

{

SceneManager.LoadScene(SceneToLoad);

}

*/

if (Input.GetKeyDown(KeyCode.Escape))

{

ClickCount++;

if (!IsInvoking(“DoubleClick”))

Invoke(“DoubleClick”, 1.0f);

}

else if (ClickCount == 2)

{

CancelInvoke(“DoubleClick”);

Application.Quit();

}

}

void DoubleClick()

{

ClickCount = 0;

}

플로트값(float) 정수로 변환해주기<볼트방식>

FloorToInt 추가

시간 지난 만큼 점수 주기<볼트방식>

Get Delta Time 추가 Multiply를 추가하여 Get Delta Time 과 곱해준다. (ex 숫자 5만큼 곱해준다) GetGameTime을 가져온다. Add 기능을 가져와서 Multiply의 결과값과 GetGameTime의 값을 더해준다. SetGameTime을 가져와서 Add의 값과 Update 값을 연결해준다.

무한 배경(패럴랙스)

무한 배경(스크롤링) -2D슈팅 게임 사용

배경을 재활욯 하는 방법

무한 배경(볼트<비쥬얼 스크립트> 방식)

임오브젝트 인스펙터 창에서 Flow Machine를 Add Component 에서 적용을 해준다. Flow Machine 에서 New를 눌러서 생성한 매크로(Macro) 폴더에 파일을 저장해준다.

그림 분리 방법

이미지를 클릭해준다. 인스펙터 창에서 Sprite Mode 를 Multiple 로 변경해준다. Sprite Editor 창에 들어간다. 에디터 창안에서 Slice 를 누른다. 오른쪽 상단위에 Apply를 적용해준다.

조이스틱 이동

public Joystick joystick;

Rigidbody rigid;

void Awake()

{

rigid = GetComponent();

}

void Start()

{

joystick = FindObjectOfType();

}

void FixedUpdate()

{

rigid.AddForce(new Vector3(joystick.Horizontal, 0,joystick.Vertical),ForceMode.Impulse );

}

플레이어 현재 위치 가져오기

Vector3 curPos = transform.position;

//플레이어의 현재 위치 가져오기 transform 은MonoBehaviour의 기본변수 이다.

플레이어가 다음에 이동할 위치값 가져오기(2D슈팅게임)

Vector3 nextPos = new Vector3(h,v,0);

//다음에 이동해야 될 위치 값 가져오기

Vector3 nextPos = new Vector3(h,v,0) * speed * Time.deltaTime;

//다음에 이동해야 될 위치 값 가져오기

//물리적 이동이 아닌 트랜스 폼 이동은 Time.DeltaTime을 곱해준다.

이동완료 조건

transform.position = curPos + nextPos; //현재위치 + 다음 위치 더해주면 물체는 이동하게 된다.

Time.deltaTime 사용 이유

성능에 따라 한 프레임에 나오는 결과 값을 보장함하여 두 유저가 같은 결과값을 얻도록 해야합니다. 이를 위해 Time.deltaTime을 사용해야 합니다.

플레이어가 화면 나가지 못하도록 막는 방법(경계 설정)

이동

Update() 메서드에 서술 한다.

float horizontal = Input.GetAxis(“Horizontal”); //수평

float vertical = Input.GetAxis(“Vertical”); //수직

rigid.AddForce(new Vector3(h,0,v), ForceMode.Impulse); //x축 ,y축 , z축

float h;

float v;

h = Input.GetAxisRaw(“Horizontal”);

v = Input.GetAxisRaw(“Vertical”);

디버그

Debug.Log(“”);

충돌 이벤트 사용

void OnTriggerEnter2D(Collider2D collision)

{

}

-——- OnTriggerEnter2D ——- 내부에 넣어 사용가능

플레이어 위치 원상복귀 기능

//플레이어 위치 원상복귀 (0,0,-1) 위치

collision.attachedRigidbody.velocity = Vector2.zero;

collision.transform.position = new Vector3(0,0,-1);

2개의 충돌체가 물리적 접촉시 호출

void OnCollisionEnter2D(Collision2D collision)

{

}

SceneManager 사용조건

using UnityEngine.SceneManagement; 네임 스페이스를 불러와야 합니다.

UI사용 조건

using UnityEngine.UI 로 라이브러리를 불러와 주어야 한다.

오브젝트의 활성화/비활성화

SetActive(true); //활성화

SetActive(false); //비활성화

Casual Game SFX Pack (효과음 다운 에셋스토어)

Audio Source (효과음 사용하기 및 적용)

유니티 메인화면 우측 하단에 있는 Add Component 에서 Audio Source를 추가 해준다.

Audio Source코드추가(손쉬운 오디오스트립트 예시)

코드상에서 먼저 AudioSource audioSource; 를 추가 한다.

그리고 AucioClip 에 역할별 변수를 적어준다.

스크립트 필수 서술

AudioSource audioSource;

ex)

public AudioClip audioJump;

public AudioClip audioAttack;

public AudioClip audioDamaged;

public AudioClip audioItem;

public AudioClip audioDie;

public AudioClip audioFinish;

ex)

audioSource = GetComponent(); 를 정의 한다.

여러 오디오 사운드를 손쉽게 관리하기 위한 방안으로 아래와 같이 정의 한다.

PlaySound(“JUMP”); 와 같이 필요한 명칭을 대입 후 조건 내부에 기입을 해준다.

ex)

void PlaySound(string action)

{

switch(action){

case “JUMP”:

audioSource.clip = audioJump;

break;

case “ATTACK”:

audioSource.clip = audioAttack;

break;

case “DAMAGED”:

audioSource.clip = audioDamaged;

break;

case “ITEM”:

audioSource.clip = audioItem;

break;

case “DIE”:

audioSource.clip = audioDie;

break;

case “FINISH”:

audioSource.clip = audioFinish;

break;

}

audioSource.Play();

}

카메라 (주인공) 추적 기능

게임을 제작할 때 카메라가 플레이어 캐릭터를 따라가도록 하는 몇 가지 옵션이 있습니다. 여러 방법 중 하나로 스크립트를 작성할 수 있습니다. 그러나 Unity에는 해당 문제를 해결해주는 빌트인 솔루션인 시네머신(Cinemachine)이 포함되어 있습니다.

무한 배경(볼트<비쥬얼 스크립트> 방식)

임오브젝트 인스펙터 창에서 Flow Machine를 Add Component 에서 적용을 해준다. Flow Machine 에서 New를 눌러서 생성한 매크로(Macro) 폴더에 파일을 저장해준다.

그림 분리 방법

이미지를 클릭해준다. 인스펙터 창에서 Sprite Mode 를 Multiple 로 변경해준다. Sprite Editor 창에 들어간다. 에디터 창안에서 Slice 를 누른다. 오른쪽 상단위에 Apply를 적용해준다.

이동

Update() 메서드에 서술 한다.

float horizontal = Input.GetAxis(“Horizontal”); //수평 이동

float vertical = Input.GetAxis(“Vertical”); //수직 이동

float h;

float v;

h = Input.GetAxisRaw(“Horizontal”);

v = Input.GetAxisRaw(“Vertical”);

GetAxisRaw의 특징은 -1,0,1의 값만 들어온다.

디버그

Debug.Log(“”);

충돌 이벤트 사용

void OnTriggerEnter2D(Collider2D collision)

{

}

-——- OnTriggerEnter2D ——- 내부에 넣어 사용가능

플레이어 위치 원상복귀 기능

//플레이어 위치 원상복귀 (0,0,-1) 위치

collision.attachedRigidbody.velocity = Vector2.zero;

collision.transform.position = new Vector3(0,0,-1);

2개의 충돌체가 물리적 접촉시 호출

void OnCollisionEnter2D(Collision2D collision)

{

}

SceneManager 사용조건

using UnityEngine.SceneManagement; 네임 스페이스를 불러와야 합니다.

UI사용 조건

using UnityEngine.UI 로 라이브러리를 불러와 주어야 한다.

오브젝트의 활성화/비활성화

SetActive(true); //활성화

SetActive(false); //비활성화

Casual Game SFX Pack (효과음 다운 에셋스토어)

Audio Source (효과음 사용하기 및 적용)

유니티 메인화면 우측 하단에 있는 Add Component 에서 Audio Source를 추가 해준다.

Audio Source코드추가(손쉬운 오디오스트립트 예시)

코드상에서 먼저 AudioSource audioSource; 를 추가 한다.

그리고 AucioClip 에 역할별 변수를 적어준다.

스크립트 필수 서술

AudioSource audioSource;

ex)

public AudioClip audioJump;

public AudioClip audioAttack;

public AudioClip audioDamaged;

public AudioClip audioItem;

public AudioClip audioDie;

public AudioClip audioFinish;

ex)

audioSource = GetComponent(); 를 정의 한다.

여러 오디오 사운드를 손쉽게 관리하기 위한 방안으로 아래와 같이 정의 한다.

PlaySound(“JUMP”); 와 같이 필요한 명칭을 대입 후 조건 내부에 기입을 해준다.

ex)

void PlaySound(string action)

{

switch(action){

case “JUMP”:

audioSource.clip = audioJump;

break;

case “ATTACK”:

audioSource.clip = audioAttack;

break;

case “DAMAGED”:

audioSource.clip = audioDamaged;

break;

case “ITEM”:

audioSource.clip = audioItem;

break;

case “DIE”:

audioSource.clip = audioDie;

break;

case “FINISH”:

audioSource.clip = audioFinish;

break;

}

audioSource.Play();

}

카메라 (주인공) 추적 기능

게임을 제작할 때 카메라가 플레이어 캐릭터를 따라가도록 하는 몇 가지 옵션이 있습니다. 여러 방법 중 하나로 스크립트를 작성할 수 있습니다. 그러나 Unity에는 해당 문제를 해결해주는 빌트인 솔루션인 시네머신(Cinemachine)이 포함되어 있습니다.

점수 만들기

728×90

반응형

[Unity] 유용한 정보 모음 (기능 / 스크립트 구분)

반응형

유니티 개발 하면서 확인한 유용한 정보 모음입니다.

클릭하시면 해당 정보로 이동합니다.

————Unity 2019.2.9f1 Ver.

기능

스크립트

기능

충돌 (Trigger)

유니티 충돌을 위한 기본 설정

Rigidbody가 적어도 한쪽에 있어야 하고

Trigger함수가 있는 스크립트를 컴포넌트로 가지고 있는 게임오브젝트의 IsTrigger 체크

충돌 시 Event 처리하는 곳

OnTriggerEnter는 트리거 상태의 무언가와 충돌했을 때 호출되는 함수

OnTriggerStay는 충돌 중일 때 호출되는 함수

OnTriggerExit은 충돌이 끝났을 때 호출되는 함수

물리충돌*

OnCollisionEnter

OnCollisionStay

OnCollisionExit

Top

Animation Animator

Gameobject – Sprite Renderer Sprite Source

Animator Controller – 상태 별 애니메이션 지정

Animator Controller

Animation – Sprite의 연속

Animation

어차피 자주 안쓰면 까먹겠지만 이해해야 할 것은

Animator Controller는

대기 상태 → 걷는 상태를 Walk 변수가 True가 되면 변화시켜주는 것

New State라는 임의의 상태에서 Explosion이라는 Animation 상태로 가려면

Conditions에서 boom이라는 변수가 true가 되어야 한다.

Animator Transition, boom이라는 Bool값에 의한 변화

Animator boom 변수 추가

변수를 이용한 상태변화는 Parameters에서 변수를 추가한 뒤 사용한다.

Animation은

대기 상태를 표현하는 연속된 그림의 모음

걷는 상태를 표현하는 연속된 그림의 모음

Top

Gradient

Gradient 클래스로 연속적인 색깔 변화를 주고 싶다면

Gradient Script

*[Range(0,1)]로 t에 필드 할당

t값에 따라 Sprite Color 변경

Gradient Script를 할당한 오브젝트

public으로 선언하면 Inspector 창에서 색깔 변화를 보면서 설정이 가능하다.

Top

*로드씬을 하면 이전 화면은 사라진다.

스크립트

Update 종류 / 구분

Update 종류 와 구분

Top

유니티 배열 선언 (Array)

1차원 배열 선언

1차원 배열 선언

사용 방법

선언한 클래스에선 사용하지 못하고

클래스 안에 있는 메서드에서 x[1] 로 사용

2차원 배열 선언

2차원 배열 선언

사용 방법

1차원과 마찬가지

a[2,1] 식으로 접근

사용 방법

Top

특수 기호 사용 방법

string으로 선언한 변수, ” “안에서 사용

” ‘ 백슬래시 \” \’ \\

Top

SetActive 활용

버튼 클릭 시 팝업 창 On / Off

버튼 응용

★Coroutine 함수

Coroutine

메서드명으로도 호출 가능하고 메서드로도 호출 가능하다.

변수를 포함하는 메서드 호출

변수가 있는 메서드

변수 전달하여 메서드 호출

메서드 이름으로 외부에서 호출 할 때

메서드명으로 코루틴 호출

이런식으로 사용하면 외부에서 호출이 가능하다.

//보호수준에 따라 public으로 선언했으면 메서드명으로도 사용 가능하다.

귀찮아지는것만 빼면 호출 가능

*참고

여러 번 실행되면 원하는 결과를 얻지 못할수도있으니

1회만 실행 되는 곳에 놓는게 좋다.

Top

모바일 뒤로가기(Back) 버튼

뒤로가기 버튼 종료 Event

뒤로가기 버튼, 종료

두 번 눌렸을 때 종료 Event

두번 누르면 종료 Event

소스

더보기 private void Quit()

{

if (Application.platform == RuntimePlatform.Android && Input.GetKeyDown(KeyCode.Escape))

{

_count += 1;

//화면 하단에 Toast 문구 추가

}

if (_count == 2) // 1초안에 2번 눌리면

Application.Quit();

if (exit_time > 1)

{

_count = 0;

exit_time = 0;

}

else

{

exit_time += Time.deltaTime;

}

}

Update에서 사용

Top

기타(작업 중)

형변환

int – string

Int – String

string – int

String – Int

안드로이드 기능

터치

안드로이드 Touch

(사실상 Input.GetMouseButtonDown(0)으로도

터치 기능을 수행하기 때문에 잘 사용 안함)

진동

Handheld.Vibrate(); 1초간 진동 (코드 메인카메라에 삽입)

Script 팁 (정리 필요)

Find 는 Active 상태의 오브젝트만 찾을 수 있다.

Instantiate 함수 사용법

Instantiate (GameObject, transform.position, transform.rotation);

HP Bar 갱신

UI – Image / Source Image 삽입, Image Type / Filled

Fill Method Horizontal, Vertical, Radial 90, 180, 360

Fill Amount (0~1)

난수 생성

x = Random.Range(a, b)

Int 형이면 정수

float형이면 범위가 0.1f ~ 2.0f 여도 1.58573 이렇게 자세하게 나온다.

예외 처리 이벤트

using System; 맨 위에 추가

Try{

}

Catch(Exception e){

}

이동

transform.Translate(x,y,z) (transform에 있는 translate에 접근을 한다. x,y,z를 변경

반응형

유니티 플레이어 이동 관련 코드 모음

*공부하는 중인 아마추어의 의견이니 좋은 방법이 있으면 댓글 부탁드리겠습니다.

1.Vector.Set으로 위치값 얻고 transform.Translate로 이동. 대각선 이동은 안된다.

public float speed; private Vector2 vector; void Update() { if (Input.GetAxisRaw( “Horizontal” ) ! = 0 | | Input.GetAxisRaw( “Vertical” ) ! = 0 ) { vector.Set(Input.GetAxisRaw( “Horizontal” ), Input.GetAxisRaw( “Vertical” )); if (vector.x ! = 0 ) { transform.Translate(vector.x * speed, 0 , 0 ); } else if (vector.y ! = 0 ) transform.Translate( 0 , vector.y * speed, 0 ); } } Colored by Color Scripter cs

2.transform.Translate(Vector3.방향*속도*시간)

public int speed; private void Update() { if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(Vector3.left * speed * Time.deltaTime); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(Vector3.right * speed * Time.deltaTime); } if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(Vector3.up * speed * Time.deltaTime); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(Vector3.down * speed * Time.deltaTime); } } Colored by Color Scripter cs

3.위의 내용과 같으면서 간결하지만, 좌표값에 더해서 그런지 물리충돌이 무시된다.

Vector2 position; public float Speed = 1 ; private void Start() { position = transform.position; } void Update() { position.x + = Speed * Time.deltaTime * Input.GetAxisRaw( “Horizontal” ); position.y + = Speed * Time.deltaTime * Input.GetAxisRaw( “Vertical” ); transform.position = position; } Colored by Color Scripter cs

‘UNITY’ 카테고리의 글 목록

유니티 키보드와 마우스 입력

골드메탈 유니티 강좌 보고 정리한 내용입니다. 1. 키보드, 마우스 모든키 입력 Input 클래스는 유니티 엔진 내에 있는 모든 입력(키보드, 마우스)에 관련된 입력을 관리해주는 클래스이다. input.anyKeyDown는 어떠한 모든 입력(키보드, 마우스)를 최초로 입력(눌러졌을 때) 받을 때 true를 반환해준다. Input.anyKey는 어떠한 모든(키보드, 마우스) 입력이 누르고 있는 동안 반환값이 true를 반환해준다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Move : MonoBehaviour { void Update() { if (Input.anyKeyDown) { D..

키워드에 대한 정보 유니티 코드 모음

다음은 Bing에서 유니티 코드 모음 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 보충 영상: 유니티 – 벡터 실습 (코드 모음)

  • unity
  • vector
  • add
  • sub
  • magnitude
  • normalized
  • length
  • gmcp
  • warehouse
  • gmcp warehouse
  • game
  • game math
  • math
  • metaverse
  • 유니티
  • 실습
  • 보충
  • 벡터
  • 게임
  • 게임수학
  • 수학
  • 코드
  • 개발
  • 개발자

보충 #영상: #유니티 #- #벡터 #실습 #(코드 #모음)


YouTube에서 유니티 코드 모음 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 보충 영상: 유니티 – 벡터 실습 (코드 모음) | 유니티 코드 모음, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  루 바브 파이 | 뉴질랜드 새콤달콤 루바브 파이 172 개의 정답

Leave a Comment