新开的坑——unity——教程所得内容——第一天

1. [SerializeField] GameObject[] mapPoints;

序列化

unity能够将public类型的数据序列化

添加SerializeField也能够将数据序列化(这是将植物大战僵尸的地图里的节点序列化)

(但是还是不太明白)

(暂且搁置)

2.get与set

get与set相当是 给与 数值设定时候添加一个过滤器

比如说 public float PH=1;

也可以这样写

public float PH

{

get{return PH;}//只读属性

set{PH=value}//只写属性

}

但是如果我们要限制PH的范围(如果value的值小于1就不能被赋给PH)

public float PH

{

get{return PH;}

set{

       if(value>+1)

        PH=value;}

}

3.GameObject

// 名字
this.gameObject.name
 
// 是否激活
this.gameObject.activeSelf
 
// 是否为静态
this.gameObject.isStatic
 
// 层级
this.gameObject.layer(返回int类型,层级前面的标号)
 
// 标签
this.gameObject.tag(返回string类型)
 
// transform
this.transform,通过Mono去得到的依附对象的GameObject的位置信息
与this.gameObject.transform得到的相同

此处请看大佬的文章(1条消息) GameObject知识点_Go_Accepted的博客-CSDN博客 

其中的2、GameObject的静态方法比较有启发性

4.GetComponent

//获取模型对象
脚本名(ScriptName) 接收对象(Model) = GetComponent<脚本名(ScriptName)>();
//通过模型绑定的脚本来获取模型对象
//注意:如果多个模型上绑定同一个脚本,只会获取到最后绑定脚本的模型对象
//获取对象的属性
GameObject NewGame;/
/创建一个对象并为对象赋值
Button button= NewGame.GetComponent<Button>();
//得到NewGame绑定的button属性
//对象悬挂脚本
GameObject NewGame;
//创建一个对象并为对象赋值
脚本名(ScriptName) 接收对象(Model) = NewGame.GetComponent<脚本名(ScriptName)>();
//得到NewGame绑定的脚本

getCompent是获取游戏组件的一种方式(GameObject.GetCompent<type>();)

比如:新建的一个空对象 添加一个Rigidbody2D组件 我要修改其中的mass值

就可以在程序中写 GetCompent<Rigidbody>().mass=20;

4.list列表    public static List<Vector2> Points = new List<Vector2>();

先鸽着 以后有空再写 (虽然可能不大)

5.协程、IEnumrable是什么东西

协程开始与停止

startCoroutine()

stopCoroutine()//开始与停止的时候 应该配套 用字符串启动 就应该用字符串停止

 比如:

startCoroutine(“createSun”);配套stopCoroutine(“createSun”);

yield的作用是进行一个等待的作用

禁止协程的进行 不能通过禁用脚本的来实现协程的停止

但可以通过或者是stopCoroutine、移除脚本、禁用对象、销毁对象、来实现协程的暂停

用inspector里的removeComponent或者是代码里加上destory实现(移除脚本)

用this.gameObject.SetActive(false)(禁用对象)

用Destory(.gameObject)(销毁游戏对象)

协程的特殊用法

其一便是实现两个或多个协程的嵌套使用

其二便是实现一个协程执行完毕之后再进行另外一个协程

public class SunFlower : MonoBehaviour
{
    IEnumerator e;
    Coroutine co;
    IEnumerator Start()
    {
        e = CountCo();
        co = StartCoroutine(e);//实现协程的启动
        yield return e;

        for (int i = 0; i <= 10; i++)
        {
            Debug.Log($"当前输出的Start的计时器i={i}");
            //计时器的时间间隔为2秒
            yield return new WaitForSecondsRealtime(2);
        }


    }
    IEnumerator CountCo()
    {
        for(int i = 0; i <= 10; i++)
        {
            Debug.Log($"当前输出的CountCo的计时器i={i}");
            //计时器的时间间隔为1秒
            yield return new WaitForSecondsRealtime(1);
        }

    }
}

【Unity协程那些事:最深入浅出的协程底层原理解析!】 https://www.bilibili.com/video/BV19Z4y1w7Fa?share_source=copy_web&vd_source=4cadfd595e673b13230a7e296c618001

(此视频还有一部分没有看完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值