我的目标:我有一个脚本
public class MyScript: MonoBehaviour
{
public bool A;
public bool B;
}
Run Code Online (Sandbox Code Playgroud)
仅当 A 为 TRUE 时,我才需要 B 可见
我对脚本进行了扩展,并在标题中添加了 UnityEditor
[CustomEditor(typeof(MyScript))]
public class MyEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
MyScript tool = (MyScript) target;
tool.A = GUILayout.Toggle(tool.A, "Flag");
if(tool.A)
{
tool.B= EditorGUILayout.Toggle(tool.B, "Flag");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但一切都没有真正改变。我做错了什么?
我尝试在JS中实现Vector3类并编写
function Vector(x,y,z) {
this.x=x;
this.y=y;
this.z=z;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止看起来还不错,但后来我想添加Vector.prototype
这个功能addVector
:
Vector.prototype.addVector(addx,addy,addz) = function(addx,addy,addz) {
x+=addx; y+=addy; z+=addz;
};
Run Code Online (Sandbox Code Playgroud)
但后来我收到一个错误:
NaN行的ReferenceError:未定义addx
我是JS的新手,我想知道我到底是在做什么.
我正在创建一个在场景中查找文本字段的模块。如果安装了 TextMeshPro,它将查找它,如果没有,则查找常规文本字段/文本网格
问题是:我怎样才能条件(伪代码)
if(textMeshProExists)
Look for A
else
Look for B
Run Code Online (Sandbox Code Playgroud) 我正在创建一个扩展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指令或汇编引用?)"