Unity(2022.3.38LTS) - 初步学习C#

目录

一. C#简介

二. 配置代码编辑器

三. C#基本语法

四. 创建脚本

创建C#脚本的方式

1. 在文件夹新建

2. 直接在物体组件创建

五. 例子

扩展物体旋转的方式:



一. C#简介

Unity 中使用的 C# 是一种面向对象的编程语言,具有强大的功能和广泛的应用。

特点

  1. 类型安全:在编译时进行严格的类型检查,减少运行时错误。
  2. 面向对象:支持类、对象、继承、多态等面向对象的特性,使得代码组织更加清晰和可维护。
  3. 丰富的库和框架:.NET 框架提供了大量的类库,方便实现各种功能。

在 Unity 中的应用

  1. 控制游戏逻辑:编写脚本控制游戏对象的行为、状态和交互。
  2. 处理用户输入:响应玩家的操作,如键盘、鼠标输入等。
  3. 实现动画效果:通过代码控制动画的播放、暂停和切换。

基本语法

  1. 变量声明:int age = 25;
  2. 控制结构:包括 if-else 条件语句、for 循环、while 循环等。
  3. 类和对象:
class Player
{
    public int health;
    public void TakeDamage(int damage)
    {
        health -= damage;
    }
}

优势

  1. 高效性能:能满足 Unity 游戏开发中对性能的要求。
  2. 良好的可读性和可维护性:规范的语法结构有助于团队协作和代码维护。

例如,在一个射击游戏中,可以使用 C# 编写脚本实现敌人的生成逻辑、玩家的射击动作以及得分计算等功能。

二. 配置代码编辑器

编辑 ->首选项

外部工具 -> 外部脚本编辑器

选择vs2022.

可以用vsCode,也可以用Rider for Unity.但是用这俩的前提是最好熟练使用vs2022了.新手还是用vs2022比较好.

我还买了这个,但是基本上还都是再用vs2022.

三. C#基本语法

变量声明

int score = 100;  // 整数类型
float speed = 5.5f;  // 单精度浮点数类型,后缀 f 表示单精度
string name = "Player1";  // 字符串类型
bool isAlive = true;  // 布尔类型

数组声明

int[] numbers = {1, 2, 3, 4, 5};  // 整数数组
string[] names = new string[3];  // 声明一个长度为 3 的字符串数组

if-else 语句

if (score > 50)
{
    Debug.Log("High score!");
}
else
{
    Debug.Log("Low score.");
}

for 循环

for (int i = 0; i < 10; i++)
{
    Debug.Log(i);
}

while 循环

int count = 0;
while (count < 5)
{
    Debug.Log(count);
    count++;
}

类和对象

class Player
{
    public int health;

    public void TakeDamage(int damage)
    {
        health -= damage;
    }
}

Player player = new Player();
player.health = 100;
player.TakeDamage(20);

方法

public void MovePlayer(Vector3 direction)
{
    // 实现移动玩家的逻辑
}

函数

public int Add(int num1, int num2)
{
    return num1 + num2;
}

例如,在一个 Unity 游戏中,您可以使用 if 语句根据玩家的生命值决定是否显示游戏结束界面:

if (player.health <= 0)
{
    Debug.Log("Game Over");
    // 显示游戏结束的相关界面
}

有其他语言基础的,看这个一遍,就能写C#了,新手先简单了解一下,知道有这么个东西,后面就是熟能生巧了,死记硬背,忘的也快.在unity中使用,还是用Unity的API更多,很多方法和控制都给封装好了.

四. 创建脚本

在层级页面,右键,选择3D对象->立方体

创建C#脚本的方式

1. 在文件夹新建

右键创建->c#脚本

输入名字即可.

这种方式创建的脚本,需要在挂在对象下面.

点击添加组件

选择刚创建的脚本

创建之后,直接鼠标左键按住这个脚本,拖动到物体上,也可以.

2. 直接在物体组件创建

点击添加组件

选择 new script

输入合适的名字即可

就会直接创建完成,并且已经添加到物体组件了.

有个更简单的方法.点击了添加组件按钮之后

直接输入自定义的脚本名称,就可以直接创建脚本了

五. 例子

选择主摄像头,快捷键(Ctrl+Shift+F),可以让游戏页面显示当前场景页面的视图.

开始编写,物体旋转脚本.

左键双击脚本,会自动打开vs2022.

然后在Update方法里面输入

  transform.Rotate(Vector3.right * Time.deltaTime);

完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(Vector3.right * Time.deltaTime);
    }
}

就可以看的这个正方体,在慢慢旋转了.

扩展物体旋转的方式:

在 Unity 中,实现物体旋转有多种方式。

使用 Transform 组件

通过修改 Transform 组件的 rotation 属性来实现旋转。

// 获取物体的 Transform 组件
Transform transform = gameObject.GetComponent<Transform>();

// 以欧拉角的方式设置旋转(绕 X、Y、Z 轴的旋转角度)
transform.rotation = Quaternion.Euler(30f, 45f, 60f);

使用 Rotate 方法

// 绕 X 轴旋转,每帧旋转 1 度
transform.Rotate(Vector3.right * Time.deltaTime);

// 绕指定轴旋转
transform.Rotate(new Vector3(1f, 2f, 3f) * Time.deltaTime);

使用物理引擎

如果物体受到物理影响,可以通过给物体添加 Rigidbody 组件,并施加扭矩来实现旋转。

Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.AddTorque(Vector3.up * 10f);

例如,在一个 3D 太空射击游戏中,敌机可以通过不断地绕自身的 Y 轴旋转来增加动态效果:

void Update()
{
    transform.Rotate(Vector3.up * Time.deltaTime * 10f);
}

或者在一个解谜游戏中,当玩家触发某个机关时,一个平台缓慢地绕 Z 轴旋转 90 度:

public void TriggerRotation()
{
    StartCoroutine(RotatePlatform());
}

IEnumerator RotatePlatform()
{
    float elapsedTime = 0f;
    float totalTime = 2f;  // 旋转总时长为 2 秒
    Vector3 startRotation = transform.rotation.eulerAngles;
    Vector3 targetRotation = startRotation + new Vector3(0f, 0f, 90f);

    while (elapsedTime < totalTime)
    {
        transform.rotation = Quaternion.Euler(Vector3.Lerp(startRotation, targetRotation, elapsedTime / totalTime));
        elapsedTime += Time.deltaTime;
        yield return null;
    }

    transform.rotation = Quaternion.Euler(targetRotation);
}

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity 2022.3引入了一些新的导航功能,以帮助开发者更方便地为游戏添加导航系统。新版本中的导航系统改进了性能和功能,使其更加强大和灵活。 首先,Unity 2022.3引入了实时路径搜索功能。该功能可以根据场景中的物体位置和碰撞体等信息,在实时场景中进行路径搜索。这意味着开发者可以在游戏运行时动态计算角色或其他游戏实体的路径。这一功能对于实时策略游戏或动态变化的游戏环境非常有用。 其次,新版本的导航系统还改进了自动化的对话框生成功能。开发者可以通过简单的设置,自动生成适应场景的对话框来实现导航指示。这个功能可以大大减轻开发者的负担,并提高游戏中导航的质量。 此外,Unity 2022.3还提供了更多的导航算法选项。不同的游戏场景可能需要不同的导航算法来平衡效率和精度。新版本中的导航系统提供了多种算法选项,让开发者能够根据具体需求选择合适的算法。 最后,Unity 2022.3导航系统的改进还包括了对2D游戏的支持。早期的导航系统主要面向3D游戏,但新版本中加入了对2D游戏的导航支持。这使得开发者能够更方便地为2D游戏创建导航系统,为玩家提供更好的游戏体验。 总的来说,Unity 2022.3版本的导航系统带来了更多强大和灵活的功能,包括实时路径搜索、自动对话框生成、多种导航算法选项以及对2D游戏的支持。这些新功能使得开发者在为游戏添加导航系统时更加便捷,为玩家提供更好的游戏体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一然明月(全栈)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值