개발환경은 다음과 같습니다.
development environment is as follows.

유니티 - 2021.3.18f1
unity - 2021.3.18f1

스파인 유니티 패키지 - spine-unity-4.2-2024-05-07
spine unity package - spine-unity-4.2-2024-05-07

First of all, please excuse that I am not good at English.

스파인오브젝트의 투명도값을 적용할때 스파인 리소스가 겹치지 않도록 해당 오브젝트에 Skeleton Render Texture컴포넌트를 추가하고 Color값에서 Alpha값을 150 설정하였습니다.
I added the SkeletonRenderTexture component to the object to prevent the Spine resource from overlapping when applying the transparency value of the Spine object and set the Alpha value of 150 in the Color value.

여기까지는 정상 작동되었습니다.
it's been works fine.

그런데, 게임내에서 동적으로 SkeletonAnimation의 SkeletonDataAsset을 변경하면, ArgumentException: RenderTextureDesc width must be greater than zero. 라는 오류가 발생합니다.
However, if I dynamically change the SkeletonDataAsset of SkeletonAnimation in the game, get the error [ ArgumentException: RenderTextureDesc width must be greater than zero ].

이 오류가 발생할때 SkeletonRenderTexture컴포넌트를 보니, RenderTexture가 Missing으로 되어있는것을 발견할수 있었습니다.
When I saw the SkeletonRenderTexture component when this error occurred, I found that RenderTexture was missing.

이 오류를 해결할수 있는 방법이 있을지 조언을 구합니다. 감사합니다.
I'm looking for advice if there's a way to fix this error. Thanks

    Related Discussions
    ...

    KorNoob Welcome to the Spine forum! There is no need for you to write an English translation, as this forum has a translate button and we can read your posts with it. Therefore, please feel free to write in your native language only:


    Our Unity expert Harald will answer for you later, so please wait until then.

      Misaki
      아하! 번역기능이 제공되는군요. 좋은 정보 감사합니다.

      KorNoob 그런데, 게임내에서 동적으로 SkeletonAnimation의 SkeletonDataAsset을 변경하면, ArgumentException: RenderTextureDesc width must be greater than zero. 라는 오류가 발생합니다.
      However, if I dynamically change the SkeletonDataAsset of SkeletonAnimation in the game, get the error [ ArgumentException: RenderTextureDesc width must be greater than zero ].

      Sorry to hear you're having troubles! Could you please share the complete exception error message you received, including the stack trace (visible if you select the error in the Console window).

      What code did you use to exchange the SkeletonDataAsset at runtime? Also, from where is this code called? It might be the wrong time in the update cycle when your SkeletonDataAsset replacement code is called.

      I assume that you've had a SkeletonRenderTexture component at the GameObject where you repaced the SkeletonDataAsset at runtime, is this correct?

        Harald
        빠른답변과 노고에 감사드립니다.

        상황은 다음과 같습니다.
        이 화면은 스파인오브젝트의 부모오브젝트이며 이곳에 스파인 에셋 데이터를 배열로 가지고 있습니다.

        이 화면은 스파인오브젝트이며 해당오브젝트에 SkeletonRenderTexture 컴포넌트를 추가하였고 Color값에서 알파값을 150으로 설정하여 투명도를 조절하였습니다.

        코드는 다음과 같습니다.
        tar변수와 target모두 첫번째 스크린샷에 나온 TargetObject클래스이며 해당 클래스의 필드로 ironDemon이 있는데 이것이 바로 스파인 오브젝트의 참조값입니다.

                int offset = (NetworkClient.localPlayer.GetComponent<PlayerInterface>().currentGamePlayer == tar.player) ? 0 : 2;
                if(target.objectType == ObjectType.PLAYER){
                    tar.ironDemon.GetComponent<SkeletonAnimation>().skeletonDataAsset = tar.ironDemonData[0+offset];
                }else{
                    tar.ironDemon.GetComponent<SkeletonAnimation>().skeletonDataAsset = tar.ironDemonData[1+offset];
                }
                tar.ironDemon.GetComponent<SkeletonAnimation>().Initialize(true);

        이 화면은 오류가 발생했을 때 로그입니다.

        이 화면은 오류가 발생했을때 해당 스파인오브젝트의 SkeletonRenderTexture 컴포넌트입니다.

        @KorNoob Thanks for your detailed writeup. According to the error message and stack trace, it might likely be that the initial frame of the new SkeletonDataAsset is not showing anything, which will might lead to the required render texture height being 0. Could you please confirm whether this might be the case?

        Could you also please send us a minimal Unity project which still demonstrates this issue? You can send it to contact@esotericsoftware.com, briefly mentioning this forum thread URL so that we know the context. Then we can have a look at what's going wrong.

          Harald
          프로젝트 데이터가 조금 많아서, 따로 최소한의 기능만 구현하고 오류를 재현한 프로젝트를 생성해서 보내드리는데 기간이 조금 걸릴듯합니다.
          최대한 빠르게 오류가 재현되는 프로젝트를 만들어서 메일로 보내드리도록 하겠습니다.
          빠른답변과 지속적인 피드백 감사드립니다.

          Harald
          안녕하세요. Harald. 요청하신 샘플 프로젝트를 첨부한 메일을 방금 보내드렸습니다.
          프로젝트에 대해 추가적인 요청이 필요한 경우, 답글을 달아주시면 확인하는대로 회신드리겠습니다.
          감사합니다.

            KorNoob Thank you for sending us a repro project! I am afraid to say but that the data you sent us was much larger than we would generally expect. (677MB)
            When you send your Unity project to someone, it is enough to have Assets, Packages, and ProjectSettings in most cases, so if there is a next time, we would appreciate it if you could delete the Libarary folder and other unnecessary files before sending them to us.
            We will look into this and let you know if we find anything.

              Misaki
              아하 Libarary폴더를 삭제해야 했군요. 주의하도록 하겠습니다. 감사합니다.

              @KorNoob Thanks for sending the package. Please note that we requested a minimal Unity project which still demonstrates this issue, but your project and example scene contains a network manager with all kinds of unrelated things. Please understand that we don't have the time to debug your net-code for potential issues there.

              You need to boil down the issue to a reproduction scene which just uses one or two scripts which re-create the whole problem, with as few lines of code as possible, definitely without any network code involved. Then we can have a look at what's going wrong.

              @KorNoob For example, the reproduction example script would setup the skeleton with one SkeletonDataAsset assigned, then e.g. set fade-out opacity accordingly, then assigns a different SkeletonDataAsset in a way which lets the issue occur.

                Harald
                답변감사합니다 Harald.
                빠른시일내에 네트워크 코드를 없앤 프로젝트 파일를 다시 보내드리겠습니다.
                마지막에 달아주신 답변내용은 제가 SkeletonDataAsset을 교체할때 잘못된 방법을 사용한것이라고 해석하면 될까요? 번역기가 정확하게 번역하지못해서 이해하기가 조금 어렵습니다.

                  @KorNoob Thanks for your understanding. Looking forward to the updated package.

                  KorNoob 마지막에 달아주신 답변내용은 제가 SkeletonDataAsset을 교체할때 잘못된 방법을 사용한것이라고 해석하면 될까요? 번역기가 정확하게 번역하지못해서 이해하기가 조금 어렵습니다.

                  No, I didn't mean that you used the wrong method, I just described that your reproduction project example scene should use just a simple script, as simple as possible. It was not intended to say that some method call is wrong in your code. It should just be minimal, without any unnecessary layers around it.

                    Harald
                    아하 이해했습니다. 자세한 설명 감사합니다 Harald.
                    그런데 재현 프로젝트를 변경하는 중에 발견한 것이 있습니다.
                    Scene에 이미 생성되어있는 스파인 오브젝트의 경우는 해당 오류가 재현되지않으나, 프리팹으로 만든 스파인 오브젝트를 런타임중에 Instantiate를 통해 생성된 스파인 오브젝트의 경우 해당 오류가 발생하는것을 확인하였습니다.
                    그래서 런타임중에 오브젝트 생성을 담당하는 SpawnManager class와, 스파인오브젝트의 애니매이션 과 SkeletonDataAsset 변경을 담당하는 TargetObject class를 만들게 되었습니다. 이 부분은 양해 부탁드립니다.
                    메일은 다시 보내드렸습니다.
                    감사합니다.

                    @KorNoob Thanks very much for sending the new Unity reproduction project! Thanks for your work on making it truly minimal, this helps us a lot! We will get back to you here on the forum once we've figured out what's going wrong.

                    Harald
                    빠른 이슈 수정 감사합니다.
                    방금 저희 프로젝트에 적용하였고 완벽하게 작동하는 것을 확인하였습니다. 다시 한번 감사드립니다.