lik*_*uku 0 extension-methods transform unity-game-engine
我正在创建一个扩展Transform的统一脚本
using UnityEngine;
using System.Collections;
using UnityEditor;
public static class TransformExtension
{
//lots of functions
public static IEnumerator tester(this Transform test)
{
Debug.Log("hello");
yield return null;
}
public static void tester2(this Transform test)
{
Debug.Log("hello2");
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用
transform.tester();
transform.tester2();
Run Code Online (Sandbox Code Playgroud)
只记录"hello2".
当我试着
StartCoroutine(transform.tester());
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"错误CS0103:当前上下文中不存在名称'tester'"
"Transform"不包含'StartCoroutine'的定义,并且没有可访问的扩展方法'StartCoroutine'接受类型'Transform'的第一个参数(你是否缺少using指令或汇编引用?)
当我试着
transform.StartCoroutine(transform.tester());
Run Code Online (Sandbox Code Playgroud)
我有:
"错误CS1061:'转换'不包含'StartCoroutine'的定义,并且没有可访问的扩展方法'StartCoroutine'接受类型'Transform'的第一个参数(你是否缺少using指令或汇编引用?)"
你不能把Coroutine称为一种方法,你宁愿通过它来启动它StartCoroutine()
.当你像普通方法一样调用它时,它将被忽略(正如你已经注意到的那样).
你不能使用transform.StartCoroutine()
因为Transform
是类型Component
而不是继承MonoBehaviour
.
因此,假设您已经在内部调用它,MonoBehaviour
因为使用transform
而不是简单地做
StartCoroutine(transform.tester());
Run Code Online (Sandbox Code Playgroud)
只要从一个内部MonoBehaviour
或另一个内部调用,它对我来说完全没问题
anyGameObject.GetComponent<MonoBehaviour>().StartCoroutine(transform.tester());
Run Code Online (Sandbox Code Playgroud)
另一个MonoBehaviour
将运行Coroutine的人甚至不必在同一个对象上,但你必须确保MonoBehaviour
附加了任何其他脚本anyGameObject
.
归档时间: |
|
查看次数: |
143 次 |
最近记录: |