반응형

 

 

 

 

에러 현상

- 스킨정보가 있는 SkeletonDataAsset을 교체한 뒤, 스킨 설정 방법에 따라 Material 정보가 없어지는 현상이 있다.

- Skeleton 정보는 정상적으로 적용되고 텍스쳐만 없는 상태로 보여진다.

- 해당 현상은 SkeletonAnimation 컴포넌트에서만 일어나며, SkeletonGraphic 컴포넌트에서는 이상이 없다.

 

 

 

코드

using Spine.Unity;

SkeletonAnimationClass.skeletonDataAsset = SomeSkeletonDataAsset;
SkeletonAnimationClass.Initialize(true);

//필드 값을 변경하면 MeshRenderer의 Material이 로드되지 않음.
SkeletonAnimationClass.initialSkinName = "skin name";
//SetSkin(str) 함수로 스킨을 변경하면 Material이 정상적으로 로드 됨.
SkeletonAnimationClass.skeleton.SetSkin("skin name";);
  • SkeletonGraphic 컴포넌트는 InitialSkinName 필드값을 변경해도 정상적으로 작동한다.

 

 

 

 

 

반응형
반응형

 

 

 

 

FindObjectsOfType<T>()

- 해당 함수로 구해지는 배열 원소들은 하이어라키 배치대로 순서가 보장되지 않는다.

- 즉, 다음과 같이 보여진다.

 

 

 

 

해결 방법

- 위 문제를 해결하기위해서는 2가지 방법이 있다.

  1. 인스펙터에서 직접 드래그 앤 드롭 해준다.

  2. FindObjectsOfType<T>로 배열을 구한 뒤, 정렬을 한다.

- 1번과 같은 경우는 노가다가 심해진다. 따라서, 코드로 정렬을 해주는 방법을 취한다.

- 이 때, 배열의 정렬은 transform.GetSiblingIndex() 값을 비교해서 정렬을 해주면 된다.

- SiblingIndex 값은 하이어라키에 배치된 순서의 값을 반환해준다.

 

 

 

코드

using System;
using UnityEngine;

SomeClass[] arr = FindObjectsOfType<SomeClass>();
Array.Sort(arr, (a, b) =>
{
    return a.transform.GetSiblingIndex().CompareTo(b.transform.GetSiblingIndex());
});
  • 위 코드는 오름차순으로 정렬되기 때문에 내림차순으로 정렬하고 싶으면 return 라인에 a와 b의 위치를 변경하면 된다.

 

 

 

결과

 

 

 

 

 

반응형
반응형

 

 

포톤 에셋을 받은 후, 비주얼 스튜디오로 작업을 하게되면 한번씩 다음과 같은 에러를 본다.

 

  • CS0246 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.

실수로라도 포톤에셋의 코드들을 건드릴일이 없는데 CS0246에러를 만나면 성가시기 짝이없다.

물론 무시하고 사용해도 기능적으로 문제가 생긴다거나 하지는 않지만, 참조를 못하는 상황이니 자동완성으로 편하게 코딩은 불가능하다.

 

 

해결방법

1. 유니티 프로젝트와 비주얼 스튜디오를 닫는다.

2. 유니티 프로젝트 폴더에서 .csproj.sln확장자의 파일을 모두 삭제한다. (유니티를 다시 실행하면 자동으로 생성이 되니 안심하고 지우면 된다.)

3. 유니티를 재실행한다.

 

 

 

반응형
반응형

 

 

 

유니티 스크립트를 편집하려할 때, 유니티 스크립팅 API에 대한 자동완성이 되지 않을때가 있다.

 

원인

- 유니티 프로젝트에서 .csproj.sln파일 생성이 안되서 발생하는 문제이다.

- 유니티 프로젝트 폴더를 열어보면 다음과 같이 유니티 프로젝트 관련 폴더만 보이고 비주얼스튜디오 관련 파일은 보이지 않는것을 확인할 수 있다. (비주얼 스튜디오의 솔루션 탐색기에서도 확인이 가능하다.)

 

 

 

 

해결방법

1. EditPreferenceExternal ToolsExternal Script Editor에서 비주얼 스튜디오를 선택한다.

 

2. 비주얼 스튜디오를 재시작하면 프로젝트 폴더에서 .csproj와 .sln 파일이 생성되는것을 확인할 수 있다.

 

 

 

 

반응형
반응형

※ 해당 에러가나는 유니티 버전은 Hub에서 유니티 설치시, JDK를 같이 설치하는 버전부터이다.


구글 플레이 게임 서비스(이하 GPGS)를 연동하기위해 플러그인을 다운받아 유니티에 임포트를 하고 Resolve를 했는데, 난데없는 에러가 떴다.

 

Gradle failed to fetch dependencies.
ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

 

'JAVA_HOME'이라는게 설정되지 않았다고한다.

찾아보니 최근 유니티들은 Hub에서 유니티 설치시, SDK, NDK, JDK를 다 설치하다보니 JAVA를 따로 설치할 필요가 없다. 문제는 여기서 발생하는데 GPGS 플러그인 설치 후, Resolve를 할 때 에러가 발생하는것이다.

에러를 추가로 읽어보면,

 

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

 

JAVA가 설치된 곳을 JAVA_HOME 변수와 일치시켜달라고 한다. 즉, JAVA_HOME이라는 환경변수를 설정해주면 된다.

그럼 시작해보자!

 

환경변수 설정

1. 내 컴퓨터에서 속성에 들어간다.

2. 고급 시스템설정 - 환경변수 버튼을 눌러준다.

 

3. 시스템 변수 - 새로 만들기 버튼을 눌러 다음과 같이 설정한다.

4. 변수 값에 OpenJDK의 경로를 넘겨준다

  ※ 경로 : 유니티 설치 경로\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK

 

 

여기까지 설정을 마쳤다면 이제 재부팅 후 다시 Resolve를 시도해보자!

그러면 Resolve가 진행되며 위와같이 정상적으로 성공 메세지를 받을 수 있다!

 

반응형

+ Recent posts