파란색 : 문제점

빨간색 : 해결방법

초록색 : 느낀 점


문제

여러 장소에서 작업하기 위해 코드를 깃에 올려놓고 다운로드하였는데 아래와 같은 오류가 발생했다. 무엇인가 연결이 끊겨서 파일 요소를 로드할 수 없는 상태인 것 같다.

 

sln파일을 메모장으로 열어봤다.

Server.sln

sln안에는 내가 생성한 cs파일들의 프로젝트 파일들의 경로가 적혀있다.  sln은 경로 된 파일들을 로드하는데, 그중에 ServerCore에 는 csproj파일이 없었다.  우선 이 파일이 어떤 형태인지 알아보기 위해 얘도 메모장으로 열어봤다. 

Server.csproj

csproj 설명https://docs.microsoft.com/ko-kr/visualstudio/msbuild/how-to-use-project-sdk?view=vs-2019


오류 해결방법

ServerCore에 는 csproj파일을 만들어주면 된다. 안에 내용은 다른 프로젝트와 다르지 않기 때문에 복사해서 이름만 바꿔주도록 한다. 

사실 작업을 하다 보면 콘텐츠에 구현하는데만 신경 썼었다. 프로젝트 파일이 어떤 식으로 구성되고 어떤 확장자가 어떤 기능을 하는지 알아볼 생각도 하지 못했다. 지금도 정확하게 알지는 못하지만 이런 오류를 해결함으로써 빌드 파일의 구성에 대해 조금이나마 알게 되었다.

 

 

반응형

파란색 : 문제점

빨간색 : 해결방법

초록색 : 느낀 점

문제

Google sheet to Json이라는 에셋을 추가했을 때 발생 Newtonsoft.Json.dll이 중복으로 있어 문제인 거 같았다.

오류 해결방법

 

추가한 GSpreadSheets 폴더

 

 

Library\PackageCache에 있는

Library\PackageCache\com.unity.nuget.newtonsoft-json@2.0.0\Runtime에 있는 Newtonsoft.Json.dll를 제거해준다.

느낀 점

내가 사용하는 유니티 프로젝트 버전은 2021 버전으로 최신을 낮은 버전으로 Google sheet to Json에셋을 추가했을 때는 아무 문제가 없었다. 검색한 본 걸로는 2020? 버전부터 패키지에 com.unity.nuget.newtonsoft-이 추가되어있는 것 같다.  최신 버전의 유니티에 에셋들은 아직 버전 대응이 되지 않았던 것 같다. 유니티 버전을 바꾸면서  고려야 해야 할 사항을 체크가 필요할 것 같다.

 

 

참고 

https://www.reddit.com/r/Unity3D/comments/o18fet/multiple_precompiled_assemblies_with_the_same_name/

반응형

파란색 : 문제점

빨간색 : 해결방법

초록색 : 느낀점

문제

빌드된 프로젝트를 돌렸을때 데이터와 이미지들이 빠진 상태로 진행되지 않는 현상이 있었다. 번들이 다운로드가 완료되지 않은 상태에서 이미지를 가져오려고 하는 경우였다. 유니티 에디터에서는 번들을 다운로드 하는 과정이 없이 진행되기에 오류가 발생되지 않아서 놓치고 있던 부분이었다. 

오류 해결방법

번들을 모두 완료됐다고 됐을 경우에 게임이 진행될수 있도록 셋팅한다. 

수정 전

우선 문제가 되는 부분은 LoadAssetAsyncGameObject이라는 위 함수안에 Addressables.LoadAssetsAsync()가 타입별로 한번만 실행되는줄 알았다. 하지만 EmAssetType타입의 해당하는 모든 객체가 로드될때마다 동작된다. 

 

 

수정 후

AsyncOperationHandle<IList<Object>> handle의 IsDone을 현재 에셋이 모두 불러와졌는지 체크할수 있었다.

+) 어드레서블에는 유니티 에디터에서 번들을 불러오는 것처럼 테스트할수 있는 기능이 있다

 

느낀점

느낀점은 어드레서블의 기능을 완벽히 숙지 못하고 코드를 설계했다. 코드 한줄 한줄 모두 이해하고 적용해야한다는것을 다시 깨닫게 되었다. 

 

 

 

참고 

docs.unity3d.com/Packages/com.unity.addressables@1.13/manual/LoadingAddressableAssets.html

반응형

파란색 : 문제점

빨간색 : 해결방법

초록색 : 느낀점

문제

전처리기를 사용하는 과정에 나는 오류메세지이다. 조건부 컴파일 기호도 넣었는데 안됐다.

오류 해결방법

전처리기는 코드 맨위에 선언해야한다. 

 

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/misc/cs1032

반응형

에러

훈련을 하기위해 트레이닝 설정값이 있는  yaml확장자인 파일을 불러오는 과정중에 에러가 났다.

 

원인 / 해결방법

yaml은 탭을 허용하지 않는다고 한다. 저거를 탭을 공백을 두지 않고 스페이스바로 공백을 두었더니 해결! 

 

참고

https://github.com/moraes/config/issues/1

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

 

비주얼 스튜디오 작업 중에 이런 오류가 났었다.

미리 컴파일된 헤더 파일이 이전 버전의 컴파일러에서 만들어졌거나 미리 컴파일된 헤더가 c++인데 c에서 사용하고 있거나 또는 그 반대의 경우입니다(Visual Studio 오류코드 C1853)

 

찾아보니 c파일과 cpp파일을 동시에 프로젝트에 삽입한 채로 빌드를 할 경우 이런 오류가 날 수도 있다고 한다.

 

 

 

오류 해결방법

 

'보기'탭 -> 솔루션 탐색기 (비주얼 스튜디오 처음 접하면 이거 찾는 경우가 많아서)

 

'미리 컴파일된 헤더 사용 안 함'으로 변경하기

 

안되면

컴파일 옵션 'C++ 코드로 컴파일'로 변경하기

 

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

 

C#기본 문법이긴 하지만 그래도 컴파일 오류이기 때문에 포스팅했다.

 

우선 파셜 클래스의 대해서 알아보자  

파셜 클래스?

동일한 클래스명을 두고 이를 partial로 선언하는데, 컴파일러는 나중에 이를 합쳐 하나의 클래스로 인식한다.

 

그럼 언제 쓸까?

한 클래스에 여러 내용들이 있을 때, 또는 특징을 분할하여 가독성을 높이거나 여러 사람이 한 클래스를 작성할 때 사용하기도 한다고 한다.

 

 

나는 Character를 상속받는 Monster클래스를 세팅/행동으로 클래스 기능으로 두 개로 나누었다.

 

 

문제점 :  오류의 원인은 파셜로 만든 두 클래스가 다른 부모클래스를 상속받고 있었다.

 해결방법 : 같은 부모를 상속받도록 Character로 수정하니 해결됐다.

 

+) 파셜은 클래스만 아니라 인터페이스,구조체도 가능하다.

 

느낀 점 : 파셜클래스는 기존에도 사용했지만 다시 한번 찾아보게 되었다. 인터페이스나 구조체도 사용이 가능하다는 것도 알게 되었다. 

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

 

갑자기 나타난 오류. 코드 상의 오류는 아닌 것 같았다. 

문제점 : Assertion failed on expression: 'task.rasterData.vertexBuffer == NULL'

찾아보니 무기효과에 사용된 파티클에서 에러가났었다. 원래 잘됐었는데...

 

 

문제의 원인이 무엇인가 찾아봤다. 3.5이하 버전에서 나타는 오류라고 한다.

 

해결방법  : 3.5이상 버전업으로 해결했다.

 

느낀 점  : 코드이외의 나타나는 오류는 원인을 예측하기도 힘들고 해결방법도 쉽지 않다. 다행히 나 말고도 이런 오류를 발생하는 다른 사람들이 올려놓은 질문들로 해결을 하긴 했다. 그리고 버전을 변경하는거 자체가 많은 리소스등 많은 오류를 가져올 수 있어서 걱정헀지만 다행히 큰 문제들은 없었다. 

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

 

이미지를 아틀라스 패킹하고 잘 로드되고 있다고 뜬금없이 몇몇의 이미지들이 뒤집혀 나왔다. 

 

아틀라스 오류? 패킹 과정 중에 오류? 인지 생각해보고 구글 검색을 했다. 검색으로 원하는 답변은 얻을 수 없었고, 아틀라스 프로퍼티타입을 위에서부터 하나하나씩 무슨 기능인지 확인했다.

 

유니티도큐먼트

확인과 동시에 내 아틀라스 설정과 비교하던 중 Allow Rotation이 체크되어있었다. 

 

체크를 해제하니 다시 원상태로 돌아왔다. 디폴트 값으로 체크가 디폴트 값이었다.

 

(유니티) 툴의 모든 프로퍼티의 기능들을 모르고 있을 때 이런 문제가 생기면 코드 상의 오류보다 해결하는데 더 많은 시간이 투자될 수도 있다. 최대한 많이 부딪혀보고 삽질도 많이 하다 보면 많은 경험과 노하우가 생길 것 같다 그전까지 열심히 개발과 공부를 해야겠다.

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

 

NullReferenceException: Object reference not set to an instance of an object

UnityEditor.Graphs.Edge.WakeUp () (at C:/buildslave/unity/build/Editor/Graphs/UnityEditor ~~~~

 

문제점NullReference가 뜨길래 비어있는 곳을 참조했나? 해서 하이라키상의 모든 오브젝트를 뒤졌는데 찾지 못했다.. 그래서 뭔가 해서 구글에 검색해보니 UnityEditor.Graphs.DLL에 있는 Unity 코드의 오류라고 한다. 오류 메시지의 C :는 Unity 개발자의 환경을 가리키며 컴퓨터가 아니라 DLL이 만들어졌기에. 이전 포럼 게시물 및 unityAnswers를 보면 전환이 없는 애니메이터 컨트롤러를 삭제하고 다시 만들 때 가장 자주 발생한다고 한다.

 

해결방법 : 유니티를 재 시작해.

 

느낀 점 : 내가 작성한 코드에서 오류가 날 때도 있지만 프로그램상이나 meta파일 등으로도 오류가 나타나는데 해결하기가 꽤 까다로울 것 같다. 코드 외적으로 신경 쓰며 작업이 필요할 듯하다. 

 

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

갑자기 잘되던 부분에서 오류가났다. 일단 처음보는 오류였다. 아마 오브젝트를 프리팹화 시키고 해제하고 하는 과정에서 오류를 발생시키는 것 같았다.  

찾아보았다. 역시 프리팹화관련 문제였다. 프리팹을 생성하는 과정에 인스턴싱하는 오브젝트의 부모를 변경해주는 부분이 있는데 그 그 부모가 프리팹화되어 있어 수정이 안된다는 오류였다.

내가 UI Root자체를 프리팹화 시켰었다. 이렇게 해놓으니 그 밑에 있는 오브젝트를 수정할 수 가 없었다.  프리팹화를 해제하고 나니오류가 해결됐다. 

내 생각하는 오브젝트들을 프리팹화시키면 개발하는데 조금 안전하다고 생각한다. 하지만 최종부모의 오브젝트를 통째로 프리팹화 시키고 그 아래 있는 오브젝트들도 프리팹화 시켰었던 것 같다. 그래서 오류가 발생한 것일 수도 있다. 

 

 

반응형

리소스를 임포트를 하려고 했는데 이런 에러가났다.

알아보니 이런 오류가나는 몇가지 이유들이 있었다.

1. 파일경로에 영어외의 문자가 있을경우

2. 패키지작성자와 패키지수신자의 버전이 맞지 않는 경우

3. 패키지를 export하는 압축 과정중에 아직 끝나지 않은 경우에 유니티를 종료했을 경우

 

나는 3번째 경우였다.

 

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

C# 윈폼으로 포폴 소개용 툴을 제작 중에 오류이다.

일단 C#문법을 익힐 때 공부했던 내용이다. static클래스는 모든 멤버가 static멤버로 되어 있으며, 클래스 명 앞에 static이라는 키워드를 정의해주고 사용해야한다. 그리고 Static클래스는 public 생성자를 가질 수 없다.  

Static클래스가 생성자를 가질 수 없는 이유는?

static클래스는 객체를 생성할 수 없기 때문이다. 그럼 또 다시 static클래스의 내용을 살펴보면 인스턴스를 생성해서 메서드를 접근하는 방법과 다르게 static클래스로 부터 직접 호출하는 메서드이다. (클래스이름.메서드이름)

인스턴스를 생성하지 않는다?

일반  클래스는 인스턴스를 생성할 때마다 메모리에 매번 새로 생성되는데, static필드는 프로그램 실행 후 해당 클래스가 처음으로 사용될 때 한 번 초기화되어 계속 동일한 메모리를 사용하게된다.

Static생성자를 이용할때는?

주로 static필드들을 초기화 하는데 사용한다.  생성자가 실행되는 시점은?

1) 클래스의 정적필드에 접근하기 직전에 호출된다.

2) 클래스의 인스턴스를 생성하기 직전에 호출된다.

3) 모든 클래스의 정적 생성자는 최초 한번만 호출된다.


처음에 C#문법을 공부할때는 Static클래스,생성자 등 그냥 그런가보다 외우고 이걸 언제 사용할까? 생각했는데 프로젝트를 만들고 오류에 직접 부딪혀보고 해결하다 보니 이해가 된다. 

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

C# 윈폼으로 포폴 소개용 툴을 제작 중에 오류이다.

저 드랍다운 리스트를 클릭하면 드롭다운으로 선택한 항목의 목록들이 출력되는데

리스트 드랍다운버튼을 클릭하면 실행되는 코드

저 리스트 드랍다운버튼을 클릭하면 실행되는 코드 dataget이라는 data를 가지고 있는 클래스를 받는다( Define클래스를 통해 가져옴) 그런 뒤 listBox1.Item을 채워주면 밑에 목록들이 노출된다. 클릭할 때마다 해당하는 목록이 출력해주기 위해 클릭하는 목록들을 각각 0부터~인덱스를 매겼다.

두 번째 클릭

문제는 각 항목들을 처음 클릭 했을때 잘 노출이 되는데 전에 눌렀던 항목을 다시 클릭하면 리스트가 출력되지 않았다. 이유를 찾아보니 list.Clear()를  하면  생성자를 통해 static으로 새로운 객체를 만들어주고 있기 때문에, Define클래스에 가져오려던 리스트가 Clear가 되는 상황이다. 그리고 항목을 매번 클릭할 때마다 Define에서 받아 오는 것은 좋지 않다.

해결방법 : 

프로그램 시작 시 한번실행되는 함수

처음 시작되는 함수에서 항목들의 데이터를 갖고있는 클래스를 리스트로 받고

항목을 선택 할때 리스트를 접근하여 해당하는 데이터 클래스를 불러오도록 수정했다.

 느낀 점 :  정적클래스와 정적 데이터의 관하여 자주 실수하는 부분이 있기 때문에 개념을 확실히 잡고 메모리 관리에도 신경 쓰면서 작업을 해야겠다. 

반응형

문제점 : 빨간색 / 해결방법 : 파란색 / 느낀 점 : 녹색 

오류내용

동적으로 오브젝트를 생성하려고 하자 생기는 ArgumentException..

메시지 내용은   ArgumentException : 인스턴스 화하려는 것이 null입니다.
Unity Engine.Object.CheckNullArgument (System.Object arg,
System.String.Message)

찾아보니 인스터스화하려는 오브젝트 null이라고 한다.

GraphSerach.class

이 코드는 밑에 클래스에 함수를 호출하는 부분

Stackbox.class

이 코드는 호출을 불리는 코드이다. Awake에서 프리 팹 로드할 경로를 받고 StackPush( )를 호출하면 그~동안 계속 잘해왔던 프리 팹이 생성되어야 하는데.

GraphSerach.class

문제는 여기였다. 그냥 클래스 new 만 해주고 있었다. stackBox클래스를 가지고있는 오브젝트를 가지고 있던가 새로운 오브젝트에 그 클래스를 추가하던가 해줘야지 클래스에 있는 함수를 호출할 수 있다.

 

느낀 점 : 너무 기초적인 오류였다. 생각해보면 당연한 거고 어려운 부분도 아니다. 하지만 이런 자잘한 오류인데 이유를 모르고  있다면 시간을 꽤 잡아먹을 수 있다 생각이 든다. 다시 안 하기 위해 작성했다.

반응형

Package Manager 에러





어느 순간부터 이런 콘솔창에 이런 에러가 났다아마도 패캐지매니터 

업데이트를 꼼꼼히 확인하지 않고 대충 업데이트해서 이런 결과가 난 것같다.



찾아보니 밑에 링크에서 해결법을 찾았다.


https://forum.unity.com/threads/couldnt-find-the-packages-list-be-sure-there-is-a-file-called-packageimportlist-in-your-project.534331/




 Assets / Scripts / Editor / PackageManagerAssembly / PackageManagerAssembly.dll

경로를 들어가본니 이 두파일이 문제인거 같다.


나는 이 두파일을 지웠다.




두 번째 방법


 Help -> Reset Packages to default 눌러서 초기화 해주자

설정사항이 초기화 되니 조심해서




반응형

+ Recent posts