赞
踩
脚本文档 脚本 - Unity 手册
Creator Kit: Beginner code Creator Kit: Beginner Code - Unity Learn
商店资源: Creator Kit: Beginner Code | URP | Tutorials | Unity Asset Store
点击 “Play” 按键进入游戏模式:
库存和角色统计
visual studio 2022 (在安装Unity时选择安装该模块)
Spawner Sample (Script) 关于游戏物体的生命药水(Health potion)
在上图右侧SpawnerSample 名称上点击右键,在弹出窗口中选择 “Edit Script”。这将在默认安装的代码编辑器(Visual Studio 2022)中打开该文件
变量angle
在上述窗口中 ,脚本的第 10 行
上述每一行是1个指令,每行指令以 “;” 结尾
上述 int angle = 15; 声明并分配一个变量(angle)。
变量是存储值的容器。你可以把它想象成一个写有名字的行李箱,你可以在里面存储你以后想要检索的信息。顾名思义,存储在变量中的信息可以更改(或变化)。
在使用变量之前,您需要通过声明其名称 (angle) 和类型 (int)来声明它。您还可以为其指定一个初始值 (15)。
在第17行和第22行分配变量不同的 值,注意在第一次(第10行)给变量分配初始值的时候要声明变量 的类型(int),后面(第17和22行)就直接给 变量赋值,不需要在前面加类型了
变量spawnPosition
设置声明药水瓶的初始位置
在第11行声明了该变量,其类型是 Vector3,是一个三维向量,表明该位置的x, y, z 值;
在第14行,第19行,第24行分别3次重新赋予该位置一个值
上述 Instantiate 是生成1个生命药水瓶,在第15行,第20行,第25行使用了3次,说明生成了3个药水瓶,在unity界面,点击中间上方的play按键,就可以在游戏窗口中可以看到每个药水瓶的位置,因为是程序生成 的,所以只有在play模式下显示这三个生命药水瓶。
创建一个 radius 变量代替原来程序中的 2 来改变生命药水瓶的初始位置:
步骤:
在visual studio 界面的上方快捷键中点击保存按键,
切回到Unity 界面,unity会自动更新上述脚本变化,再次点击unity界面中间上方的play按键,看看声明药水瓶的位置是否改变了,每个药水瓶之间的距离变大了!
函数是指令集。当编译器到达某个函数时,它会告诉计算机完成(或执行)该集中的所有指令,然后再继续执行脚本的其余部分。
上述程序代码中Instantiate 是一个生成新生命药水瓶的函数,我们在代码后面加入如下代码,在游戏中生成第四个生命药水瓶:
// Fourth potion created at spawn
angle = 135;
direction = Quaternion.Euler(0, angle, 0) * Vector3.right;
spawnPosition = transform.position + direction * radius;
Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity);
void AddingNumbers( float num1, float num2 )
{
float resultingNumber;
resultingNumber = num1 + num2;
}
该函数的每一行
void AddingNumbers(float num1, float num2)
这是一个函数声明,它指示计算机创建一个函数。这类似于变量声明。函数声明始终包括:
1.函数的类型 。void是一种特殊类型,这意味着“无类型”或“空”,因为它不存储在任何地方。当你调用int函数时,它会返回一个整数值; void 类型变量不返回值。
2.函数的名称,每次您希望计算机执行函数中的指令时都会使用该名称。该函数的名称是AddingNumbers 。
3.变量声明,括号之间。这些称为参数。您可以包含任意数量的参数,以逗号分隔。即使函数不带变量,也需要括号。
变量是浮点型(float)变量。浮点变量是小数,与 int 变量(整数或整数)相反。它们的小数点两侧都有数字,可用于提高准确性。
函数第一行后面有:
{
float resultingNumber; //声明变量;
resultingNumber = num1 + num2; //变量赋值,根据第一行函数括号中的参数
}
示例函数调用:
AddingNumbers(5.5f, 18.9f);
函数调用由以下部分组成:
函数调用告诉计算机在继续按顺序执行脚本之前执行函数中包含的所有指令。
上述代码中如下四个部分的内容中大部分相似,只是 angle 的值不同,如下图所示:
可以编写一个函数来表示上述四个部分中的共同内容。
void SpawnPotion(int angle)
该函数的初步内容如下:
- void SpawnPotion(int angle)
- {
- Vector3 direction = Quaternion.Euler(0, angle, 0) * Vector3.right;
- spawnPosition = transform.position + direction * radius;
- Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity);
- }
spawnPosition
,
radius,下面有红色的波浪线,表明该处有错误
- void SpawnPotion(int angle)
- {
- int radius = 5;
-
- Vector3 direction = Quaternion.Euler(0, angle, 0) * Vector3.right;
- Vector3 spawnPosition = transform.position + direction * radius;
- Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity);
- }
- public class LootAngle
- {
- }
public class LootAngle
{
//声明2个变量
int angle;
int step;
//构造函数,与类的名称一致
//给上述2个变量赋值
public LootAngle(int increment)
{
step = increment;
angle = 0;
}
//计算下一步的角度
public int NextAngle()
{
int currentAngle = angle;
angle = Helpers.WrapAngle(angle + step);
return currentAngle;
}
}
2. 在 start 函数中调用 LootAngle 类
LootAngle myLootAngle = new LootAngle(45);
3. 更新SpawnPotion函数中的参数
SpawnPotion(myLootAngle.NextAngle());
新的脚本内容如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。