当前位置:   article > 正文

Unity脚本_spawnersample download

spawnersample download

1. C#基础知识

Unity C#教程 C#教程

脚本文档 脚本 - Unity 手册

  • 变量与函数

  • IF - Else

  • 循环 - For

  • 循环 - Foreach

  • 循环 - While

  • 作用域访问修饰符

  • Awake 和 Start

  • Update 和 FixedUpdate

  • Transform组件

  • Destroy

  • 获得输入 - Input Key

  • 获得输入 - Button Click

  • 获得输入 - Mouse

  • Instantiate

2. Unity 教程

Creator Kit: Beginner code Creator Kit: Beginner Code - Unity Learn

商店资源: Creator Kit: Beginner Code | URP | Tutorials | Unity Asset Store

        1. 导入资源到Unity

  •         新建1个Unity 3D 项目;
  •         在网页中打开上述商店资源(记住要登录自己的Unity ID),点击“添加至我的资源”,再点击“在Unity中打开”
  •         回到Unity 界面,依照界面的提示框依次点击;
  •         导入完成后,在Project窗口 Unity Technologies >  Creator Kit - Beginner code > Scenes 文件夹中双击 ExampleScene

        2. 试玩游戏

点击 “Play” 按键进入游戏模式:

  •          导航
这是一款带有点击控制系统的砍杀角色扮演游戏。这意味着您可以点击:
  • 走到那里的位置
  • 攻击目标(假人)
  • 将点击的物体添加到您的库存中的项目
尝试攻击邪恶的训练假人来开始。您可以使用滚轮进行放大和缩小。

        库存和角色统计

单击屏幕左下角的库存包可以:
  • 查看角色统计数据(力量、防御和敏捷)
  • 查看设备和库存物品(将鼠标悬停在它们上方以显示更多详细信息)
  • 双击图标使用或装备物品

        3. 开始编程

设置默认编程器

 visual studio 2022 (在安装Unity时选择安装该模块)

  • 点解Unity界面上端的 “Edit” 菜单,在下拉菜单中选着 “Preference”

  • 在弹出的Preferences 窗口中选择左侧菜单 “External Tools”, 然后在右侧的 External Script Editor 右侧的下拉框中选择 Visual Studio 2022.

打开脚本文件  

Spawner Sample (Script) 关于游戏物体的生命药水(Health potion)

  • 在层次结构中,选择LevelDesign > PotionSpawner游戏对象。
  • 在 Inspector 中,找到Spawner Sample (Script) 组件。该组件是使三种药水出现的脚本。

在上图右侧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 来改变生命药水瓶的初始位置:

步骤:

  • 声明变量: int radius = 5;
  • 分配该radius变量到spawnPosition,替代 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 变量(整数或整数)相反。它们的小数点两侧都有数字,可用于提高准确性。
 

函数第一行后面有:

函数声明后有:
  1. 左花括号
  2. 指示
  3. 右花括号
这两个花括号之间的所有内容都称为函数体

{

        float resultingNumber;        //声明变量;

        resultingNumber = num1 + num2;   //变量赋值,根据第一行函数括号中的参数

}

函数体包含捆绑在函数名称下的指令。当计算机遇到另一条指令中的函数名时,计算机就会执行这些指令。
请记住,组中的每条指令都以分号结尾。
  •         调用该函数

示例函数调用:
        AddingNumbers(5.5f, 18.9f);

函数调用由以下部分组成:

  1. 函数名称
  2. 一组包含两个值的括号
  3. 分号,标记指令的结束

函数调用告诉计算机在继续按顺序执行脚本之前执行函数中包含的所有指令。

编写函数

上述代码中如下四个部分的内容中大部分相似,只是 angle 的值不同,如下图所示:

可以编写一个函数来表示上述四个部分中的共同内容。

void SpawnPotion(int angle)
  • SpawnPotion是一个描述性函数名称,这对以后阅读您的代码的任何人都有帮助。您可能选择了不同的名称 - 任何清晰且描述性的替代名称都可以。
  • 参数变量类型为 int
  • 示例中的参数变量称为 angle ,因为这是每个生成的药水唯一会发生变化的变量。同样,您可能在自己的版本中选择了不同的名称。

该函数的初步内容如下:

  1. void SpawnPotion(int angle)
  2. {
  3.         Vector3 direction = Quaternion.Euler(0, angle, 0) * Vector3.right;
  4.         spawnPosition = transform.position + direction * radius;
  5.         Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity);
  6. }
Vector3是一种变量类型,它将 3D 游戏空间中的位置存储为三个值(x 轴、y 轴和 z 轴)。这些值通常简称为x yz
但是在visual studio 中会看到  spawnPosition radius,下面有红色的波浪线,表明该处有错误
上述错误是 spawn Position 和 radius 在SpawnPotion函数中还没有声明,直接调用一个没有声明的变量是会报错的。
因此在SpawnPotion函数要重新声明 spawn Position 和 radius两个变量:
  1. void SpawnPotion(int angle)
  2. {
  3.         int radius = 5;
  4.         Vector3 direction = Quaternion.Euler(0, angle, 0) * Vector3.right;
  5.         Vector3 spawnPosition = transform.position + direction * radius;
  6.         Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity);
  7. }
重新更新原有的代码如下:
再次切回到Unity 界面,unity会自动更新上述脚本变化,再次点击unity界面中间上方的play按键,原来的图象没有改变。

关于类 class

在SpawnerSample 脚本代码中,有如下代码,声明 SpawnerSample类
public class SpawnerSample : MonoBehaviour
这称为 声明,并使用关键字“class ”进行标识
函数使您能够将指令组合在一起。以类似的方式,类使您能够将相关的函数和变量组合在一起。
SpawnerSample 的类的范围内 将函数和变量分组在一起使您能够有效地组织代码。
您可以将类视为包含相关内容的不同货车(例如可变行李箱和功能桶)。正如货车可以作为有组织的货车列车一起行驶一样,班级也可以按照有组织的脚本一起工作。
  • 点运算符
使用句点或句号访问层次结构中的不同变量;这称为点运算符。只要您知道变量所在的位置并有权访问它,就可以使用点运算符在脚本中查找其值。
在SpawnerSample 脚本代码中,有如下代码,
transform.position
Vector3.right
Quaternion.Euler(0, angle, 0)
使用点运算符时,正确的语法(代码的结构)非常重要:
  • 首先,点左侧是包含您需要访问的变量的变量
  • 中间是点运算符
  • 右边是第一个变量中包含的变量
  • 创建1个类变量
使用关键字 new 创建1个类变量
Vector3 myVector = new Vector3();
1.关键字new ,告诉编译器在内存中创建一个新的变量空间
2.变量类型
3. 左括号和右括号,就像函数一样:( )
4. 指令结束的分号
完成此操作后,myVector就可以像任何其他变量一样使用。

编写类Class

1.   添加一个 类声明 。将其放置在 SpawnerSample 脚本文件中 SpawnerSample 类的右大括号之后:
  1. public class LootAngle
  2. {
  3. }
此类 LootAngle 需要按常规顺序计算药水生成的角度。即自动生成上述 angle (15,55,95,135)值。为此,它需要能够存储:
  • 当前位置的角度 ( n )
  • 每次生成新药水时需要添加到该位置的度数 ( x °)
这将使其能够计算以下方程: 新药水的位置 = n + x ° 
如下是 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());

新的脚本内容如下图所示:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/117724
推荐阅读
相关标签
  

闽ICP备14008679号