我的编译器告诉我它不能将 'void' 转换为 'string' 我明白这意味着什么,但不知道如何修复它

My compiler tells me it cannot convert 'void' to 'string' I understand what this means, but not how to fix it

这里我试图在随机位置实例化定义的GameObject(在RandomPosOne()中定义)

但是我的编译器说

cannot convert from 'void' to 'string'

public class Enemyspawner : MonoBehaviour
{
    public GameObject Elf;
 
    private void OnCollisionEnter2D(Collision2D collider)
    {
        if (collider.gameObject.CompareTag("SpawnTrigger1"))
        {
            InvokeRepeating((SpawnElfOne()), 2f, 3f);

        }
        void SpawnElfOne()
        {
            Instantiate(Elf, RandomPosOne(), Quaternion.identity);
        }
        
    }

    Vector2 RandomPosOne()
    {
        float x, y;
        x = Random.Range(-8.6f, 8.7f);
        y = Random.Range(3.05f, -3.36f);
        return new Vector2(x, y);
    }

    Vector2 RandomPosTwo()
    {
        float x, y;
        x = Random.Range(-8.8f, 8.8f);
        y = Random.Range(19f, 12.6f);
        return new Vector2(x, y);
    }

}

将本地 void 方法 SpawnElfOne 移到实例中

并在调用 InvokeRepeating

时将目标方法名称作为 string 参数传递
public class Enemyspawner : MonoBehaviour {
    public GameObject Elf;
 
    private void OnCollisionEnter2D(Collision2D collider) {
        if (collider.gameObject.CompareTag("SpawnTrigger1")) {
            InvokeRepeating("SpawnElfOne", 2f, 3f);
        }           
    }

    void SpawnElfOne() {
        Instantiate(Elf, RandomPosOne(), Quaternion.identity);
    }
        
    Vector2 RandomPosOne() {
        float x, y;
        x = Random.Range(-8.6f, 8.7f);
        y = Random.Range(3.05f, -3.36f);
        return new Vector2(x, y);
    }

    Vector2 RandomPosTwo() {
        float x, y;
        x = Random.Range(-8.8f, 8.8f);
        y = Random.Range(19f, 12.6f);
        return new Vector2(x, y);
    }

}