YarnSpinnerTool / YarnSpinner

Yarn Spinner is a tool for building interactive dialogue in games!
https://yarnspinner.dev
MIT License
2.36k stars 201 forks source link

show image가 정상적으로 작동되지않습니다 도와주세요 #392

Open kwakminoo opened 1 month ago

kwakminoo commented 1 month ago
using UnityEngine;
using UnityEngine.UI;
using Yarn.Unity;

public class YarnImageHandler : MonoBehaviour
{
    // 이미지가 표시될 UI 오브젝트 (예: Image 컴포넌트가 있는 오브젝트)
    public GameObject imageObject;

    // Yarn Spinner 명령어에 커스텀 명령 추가
    void Start()
    {
        var dialogueRunner = FindObjectOfType<DialogueRunner>();

        // 명령어 등록 (이미지 출력)
        dialogueRunner.AddCommandHandler<string>("show_image", ShowImage);

        // 명령어 등록 (이미지 숨김)
        dialogueRunner.AddCommandHandler("hide_image", HideImage);
    }

    // 이미지 출력 함수
    [YarnCommand("show_image")]
    public void ShowImage(string imageName)
    {
        // Resources 폴더에서 이미지 불러오기 (Resources/Images 폴더를 기준)
        Sprite image = Resources.Load<Sprite>($"Images/{imageName}");

        // 이미지가 있는지 확인
        if (image != null)
        {
            // Image 컴포넌트를 찾아서 이미지 설정
            Image imageComponent = imageObject.GetComponent<Image>();
            if (imageComponent != null)
            {
                imageComponent.sprite = image;
                imageObject.SetActive(true); // 이미지 오브젝트 활성화
            }
            else
            {
                Debug.LogError("Image 컴포넌트를 찾을 수 없습니다.");
            }
        }
        else
        {
            Debug.LogError($"이미지 '{imageName}'을(를) 찾을 수 없습니다. 경로를 확인하세요.");
        }
    }

    // 이미지 숨기는 함수
    [YarnCommand("hide_image")]
    public void HideImage()
    {
        imageObject.SetActive(false); // 이미지 오브젝트 비활성화
    }
}

이코드를 사용중인데 실행하면

Can't call command show_image, because 1 doesn't have the correct component

이 오류가 뜹니다 다른 오브젝트나 폴더에는 문제가 없어보이는데 왜 이런지 모르겠습니다

desplesda commented 1 month ago

Hello! Please note that the developers of Yarn Spinner only speak English. Based on your provided code and machine translations of your issue, it looks like you're having trouble calling a custom command.

The first thing I'm noticing is that you're registering the command twice - it's being registered for you because you have YarnCommand attributes on your methods, but you're also calling AddCommandHandler and registering another command with the same name.

kwakminoo commented 1 month ago

고마워요 start부분에 AddCommandHandler을 사용하고 [YarnCommand]를 삭제했더니 이미지가 잘 떠요!