C#/Unity2D |无法访问 public class 方法

C#/Unity2D | Can't access public class method

我目前正在学习 Unity,有一个关于 C# 的问题。 我定义了一个 class 这样的:

using UnityEngine;

public class ObscuringItemFader : MonoBehaviour
{
     private SpriteRenderer spriteRenderer;

     private void Awake()
     {
          spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
     }

     public void FadeOut()
     {
          StartCoroutine(FadeOutRoutine());
     }

     public void FadeIn()
     {
          StartCoroutine(FadeInRoutine());
     }

创建它的一个实例可以完美地工作,但是当我调用 public 方法时,就像我在这里做的那样:

using UnityEngine;

public class TriggerObscuringItemFader : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other) 
    {
        ObscuringItemFader[] obscuringItemFader = other.gameObject.GetComponentsInChildren<ObscuringItemFader>();
        if(obscuringItemFader.Length > 0)
        {
            for(int i = 0; i < obscuringItemFader.Length; i++)
            {
                obscuringItemFader[i].FadeOut();
            }
        }
    }

它给我一个错误提示:“ObscuringItemFader”不包含 FadeOut 的定义。

有谁知道这里到底出了什么问题?希望不仅仅是我无法定位的愚蠢语法错误。

在此先感谢您!

我找不到此代码的逻辑或语法的任何错误(除了技术上缺少 class 结束括号)。

另一个脚本中可能存在另一个错误,导致其中一个脚本无法正确编译。

您可以 select 在 visual studio 中构建 > 构建解决方案,如果有任何其他编译错误导致无法应用对这些脚本的更改。

我解决了! 感谢@Kalib Crone,他向我保证没有 logic/syntax 错误,我决定从 VS Code 转移到 VS 2022 并查看它,出于某种原因,当我打开它时 ObscuringItemFader class 是空的Visual Studio!

当我在 VS Code 中重新打开它时,上面显示的代码又出现了,但是当我用它们打开文件时,Unity 和 VS 2022 似乎都看不到它。