Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 듀얼쇼크4
- Rewired
- unityhub
- apk
- 유니티
- 랜더스트리밍
- DS4
- Specular Highlights
- 에셋번들
- webview
- RenderStreaming
- 구글플레이스토어
- Unity VisualStudio
- 커스텀쉐이더
- AR
- 역직렬화 오류
- TextMeshPro 한글
- untiy
- kinect v2
- WebGL
- android app bundle
- 반응형레이아웃
- Android
- TextMeshPro
- Unity
- muilt controller
- AssetBundle
- Environment Reflections
- Depth camera
- web3D
Archives
- Today
- Total
기억저장고
UnityEngine.UnityException: IsPersistent can only be called from the main thread.오류해결방법 본문
Unity
UnityEngine.UnityException: IsPersistent can only be called from the main thread.오류해결방법
기억해조 2022. 9. 6. 18:57WebSocket 통신으로 받은 데이터 처리 시, 메인쓰레드에서만 돌릴 수 있다는 오류가 생길 수 있다.
(UnityEngine.UnityException: IsPersistent can only be called from the main thread.)
[발생한 오류]
Change Color Error : UnityEngine.UnityException: IsPersistent can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
at (wrapper managed-to-native) UnityEngine.Renderer.IsPersistent(UnityEngine.Renderer)
at UnityEngine.Renderer.get_material () [0x00001] in <898af1af8ccf490a906c218e1e74b230>:0
at ObjectBase.ChangeColor (System.String partName, System.String hexColor, System.String propertiesName) [0x0000a] in D:\MMPSTREAMING\Project\mmpStreamingURP\Assets\01_Script\Base\ObjectBase.cs:157
*해결방법
1. UnityMainThread.cs 스크립트 작성(복붙해서 스크립트 제작)
using System;
using System.Collections.Generic;
using UnityEngine;
internal class UnityMainThread : MonoBehaviour
{
internal static UnityMainThread wkr;
Queue<Action> jobs = new Queue<Action>();
void Awake()
{
wkr = this;
}
void Update()
{
while (jobs.Count > 0)
jobs.Dequeue().Invoke();
}
internal void AddJob(Action newJob)
{
jobs.Enqueue(newJob);
}
}
2. 오류가 나는 함수에 적용
public void MyFunction(string partName)
{
//아래와 같이 코드 작성
UnityMainThread.wkr.AddJob(() =>
{
//원래 돌려야하는 코드 작성
Debug.Log("원래 돌려야하는 코드");
});
}
출처
https://stackoverflow.com/questions/53916533/setactive-can-only-be-called-from-the-main-thread
'Unity' 카테고리의 다른 글
cmd에서 유니티 에디터 실행시키는법 (0) | 2022.09.15 |
---|---|
유니티 패키지 스크립트 수정하는 방법 (0) | 2022.09.14 |
unity exe 파일 실행 시 외부 매개변수 전달방법 - 어규먼트(arguments )사용 (0) | 2022.08.04 |
untiy AR Foundation 빌드 후 화면 검정화면 나올때 해결방법 (0) | 2022.08.03 |
unity 안드로이드 WebView 개발 툴 (0) | 2022.08.03 |
Comments