2023/08/08 TIL

김도현·2023년 8월 8일
0

TIL

목록 보기
16/76

금일 배운 것

문자열 특정 문자 이후 버리기(자르기)

string str = new string[]{"hello, World};
str = str.Substring(0,str.LastIndexOf(','));
// 결과값 : "hello"

hello, World를 첫번째 h(0)에서 5자리 문자를 사용한다는 뜻입니다.

반대로

string str = new string[]{"hello, World};
str = str.Substring(str.IndexOf(','));
// 결과값 : " World"

str.IndexOf(',')로 6의 값을 얻은 이후 6번부터 끝까지 쓴다는 뜻입니다.

Unity 문법

특정 오브젝트 찾기

Gameobject로 선언된 이름.transform.Find("gameobject이름")

특정 오브젝트의 변수 변경하기

Gameobject로 선언된 이름.transform.Find("gameobject이름").Getcomponent<컴포넌트이름>().변수이름

특정 오브젝트의 이미지 변경하기

Gameobject로 선언된 이름.transform.Find("gameobject이름").GetComponent<SpriteRenderer>().sprite =폴더이름.Load<Sprite>(파일이름 또는 경로/파일이름);

다른 Scene에서 변수 활용하기

1. public static으로 선언

2. DontDestroyOnLoad로 씬 바뀔시 오브젝트 파괴 방지

DontDestroyOnLoad(게임오브젝트명);

Unity 합병 툴

  1. 본인 pc의 "UnityYAMLMerge.exe " 위치를 확인
  2. 내가 작업하고 있는 프로젝트에 숨겨져 있는 .git안에 있는 config파일을 아래와 같이 추가한다
[merge]
 tool = unityyamlmerge
[mergetool "unityyamlmerge"]
 trustExitCode = false
 cmd = 'UnityYAMLMerge.exe가 있는 위치' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

예시

[merge]
 tool = unityyamlmerge
[mergetool "unityyamlmerge"]
 trustExitCode = false
 cmd = 'C:\\Program Files\\Unity\\Hub\\Editor\\2021.1.14f1\\Editor\\Data\\Tools\\UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
  1. 테스트
git mergetool

제대로 작동되는지 확인한다.

오류시 유니티 에디터의 SettingsEditor에서 아래의 두 값을 확인

  • Version Control mode : Visible Meta Files
  • Asset Serialization mode : Force Text

현재 몰라서 구글중인 문제

ArgumentNullException: Value cannot be null.
Parameter name: _unity_self
UnityEditor.SerializedObject.FindProperty (System.String propertyPath) (at <bf6080dbf0564cf1b405dfd6e0dac725>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.BindPropertyRelative (UnityEngine.UIElements.IBindable field, UnityEditor.SerializedProperty parentProperty) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.BindTree (UnityEngine.UIElements.VisualElement element, UnityEditor.SerializedProperty parentProperty) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.ContinueBinding (UnityEngine.UIElements.VisualElement element, UnityEditor.SerializedProperty parentProperty) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEditor.UIElements.Bindings.DefaultSerializedObjectBindingImplementation+BindingRequest.Bind (UnityEngine.UIElements.VisualElement element) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEngine.UIElements.VisualTreeBindingsUpdater.Update () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.Panel.UpdateBindings () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.UpdateSchedulers () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.UIEventRegistration.UpdateSchedulers () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEditor.RetainedMode.UpdateSchedulers () (at <68ddc6fd093848298397957a5969af5e>:0)

문제의 원인
스테이지 전환 Object를 선언시 발생
예) openStage_2를 선언

private GameObject openstage_2;

~~이후
void start()
{
	openStage_2 = GameObject.Find("openStage_2");
}

0개의 댓글