create-with-code Unity学习记录 (2)

目录

学习记录1
学习记录2
学习记录3
学习记录4

书接上回,

unit 2

如何在unity中限制对象在某个区域内可以重写Update接口

void Update() {
     if (transform.postion.x < -10) {
         transform.position = new Vector3(-10, transform.position.y, transform.position.z);
     }
}

继续强调unity界面是一个方便用户提供对象操作的窗口,整体就是面向对象的思想,从代码上也可以看出。
在这里插入图片描述
在前文中说过,从资源文件夹中拖动放入界面中,其实类似与通过类创建了对象,
在用户在界面中创建出对象或者修改过的对象,还可以通过对象反向创建出类,即预设物体(prefab)。方式上,只是方向反一下,从场景把物体拖动到资源文件夹中

Prefab是一种资源类型——存储在项目视图中的一种可反复使用的游戏对象。因而当游戏中须要非常多反复使用的对象、资源等时,Prefab就有了用武之地。它拥有下面特点:
能够放到多个场景中。也能够在同一个场景中放置多次
当加入一个Prefab到场景中,就创建了它的一个实例
全部的Prefab实例链接到原始Prefab,本质上是原始Prefab的克隆。
不论项目中存在多少实例。仅仅要对Prefab进行了改动。全部Prefab实例都将随之发生变化

在脚本中,如果想生成prefab,可以定义一个变量

public GameObject projectilePrefab;

然后可以通过窗口将对象拖动赋值给该成员变量
在创建的时候使用Instantiate

Instantiate(projectilePrefab, transform.position, projectile.transform.rotation)

而删除一个对象可以使用

Destory(gameObject);

检测按键输入

Input.GetKeyDown(KeyCode.Space)

在把对象从场景拖动到资源文件夹的时候会有选项要求
预制体(Prefab)和预制体变体(PrefabVariant)
讲解
在这里插入图片描述
在场景中,可以创建一个空对象,从而使场景中能够有一个不可见的可使用实例对象,

对象数组创建

public GameObject[] animalPrefabs;

间隔调用函数使用

InvokeRepeating("SpawnRandomAnimal", startDelay, spawnInterval);

如果想为物体添加碰撞,可以在界面上为对象添加碰撞体
在这里插入图片描述
碰撞事件需要重写 OnTriggerEnter

void OnTriggerEnter(Collider Other) {
    Destory(gameObject);
    Destory(other.gameObject);
}

可以看出,当发生碰撞时,会将碰撞对象的碰撞体作为参数传入函数中
从而可以控制对象,每一个物体本身都包含一个gameObject,可以用于对其参数的访问。

//大写开头GameObject 与gameObject的区别
//大写开头GameObject 是类,是class
//小写开头gameObject 具体的个体,是对象

调试信息显示,使用

Debug.Log("Game Over!);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值