栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

unity

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity

Inspector窗口可编辑的变量

1.让私有属性在inspector面板上修改

[SerializeField]
private int age;

2.公共变量不让其显示编辑

[HideInInspector]
public string name1;

3.大部分类型都能被在inspector窗口中被显示编辑

不支持字典和自定义类型

支持数组、列表、枚举、unity内置类

public enum E_enum
{
    Normal,
    Player,
    Monster
}

public struct MyStruct
{
    public int age;
    public string name;
}

public class MyClass
{
    public int age;
    public string name;
}

public class test : MonoBehaviour
{
    public int[] array;
    public List list;
    public E_enum type;
    public GameObject obj;

    public Dictionary dic;

    //自定义变量类型
    public MyStruct mystruct;
    public MyClass muclass;

}

让自定义类型可以被访问

[System.Serializable]
public struct MyStruct
{
    public int age;
    public string name;
}

4.辅助特性

[Header("个人信息")]
public string name;
public int age;
public bool sex;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a0SL3tjb-1645121379064)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220216171445259.png)]

[Tooltip("家庭")] //鼠标悬停注释
public int family;

[Range(0, 5)] //设定滑条值
[Space()] //空一行
public int luck;

[Multiline(4)]//显示多少行字符串
public string text;

[ContextMenuItem("重置", "demo")]//为变量添加快捷方法
public int money;
private void demo()
{
	money = 100;
}

[ContextMenu("测试方法")]
private void Test()
{
	print("测试");
}
MonoBehavior

1.打印组件名字

print(this.gameObject.name);

2.得到组件位置信息

print(this.transform.position);
print(this.transform.eulerAngles);
print(this.transform.lossyScale);
//跟this.gameObject.transform一样

3.失活脚本

this.enabled = false;
得到依附对象(组件)上挂载的其他脚本(重要)

1.得到自己挂载的单个脚本

test1 t = this.GetComponent();

2.得到自己挂载的多个脚本,得到的是一个数组,不常用

FindOtherScript[] array = this.GetComponents();

3.得到子对象挂载的脚本,可以设定布尔值

test t = this.GetComponentInChildren(true);
GameObject

1.成员变量

print(this.gameObject.name);        
print(this.gameObject.activeSelf);
print(this.gameObject.isStatic);
print(this.gameObject.tag);
print(this.gameObject.layer);
print(this.gameObject.transform.position);

2.静态方法

//找单个对象,找不到失活对象,无法确定场上多个相同对象
GameObject obj = GameObject.Find("名字");
Gameobject obj = Gameobject.FindGameObjectWithTag("Player");
	//获取单个对象还可用public

//查找多个对象,只能通过tag找
GameObject[] obj = GameObject.FindGameObjectsWithTag("Player");

//C#中System->Object->GameObject

//找到场景中挂载的某一个脚本对象,找到挂载在别的组件上的脚本从而获取组件信息
//效率很低
test t = GameObject.FindObjectOfType();

//实例化对象(克隆对象),往往关联预设体
public GameObject obj;
void Start()
{
    GameObject.Instantiate(obj);
    
    //还可用以下方法,因为此方法是Object基类提供的
    Instantiate(obj);
    Object.Instantiate(obj);
}

//删除对象,第二个参数延迟几秒后删除,也可以删除脚本
//不会马上移除对象,会在下一帧把对象移除并从内存删除
//也为Object基类提供
GameObject.Destory(obj,5);
//立即将对象从内存中移除
GameObject.DestroyImmediate(obj);

//如果是继承MonoBehavior的类,不用写GameObject
Destory();

//过场景不移除
//默认情况 在切换场景时 场景中对象会被自动删除
//一般传自己依附的GameObject对象
GameObject.DontDestroyOnLoad(this.gameObject);
//如果继承MonoBehavoir
DontDestroyOnLoad(this.gameObject);

寻找对象效率都比较低,都是早期用,早期也一般先用public

3.成员方法

//1.创建一个空物体
GameObject obj = new GameObject();
GameObject obj2 = new GameObject("Atuoa");
//挂载test,test1脚本
GameObject obj3 = new GameObject("Atuoa", typeof(test), typeof(test1));

//2.为对象动态添加脚本(重要)
obj.AddComponent();

//3.标签比较
if(this.gameObject.tag == "Player")
{
    print("yes");
}

if (this.gameObject.CompareTag("Player"))
{
    print("yes");
}

//失活
obj.SetActive(false);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/902380.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号