凉鞋的 Unity 笔记 202. 变量概述与简介

news2024/12/26 0:03:04

202. 变量概述与简介

想要用好变量不是一件简单的事情,因为变量需要命名。

我们可以从两个角度看待一个变量,第一个角度是变量的功能,第二个是变量的可读性。

变量的功能其实非常简单,变量可以存储一个值,这个值是特定类型的。

比如我们在上一篇写的 var textToPrint = “Hello World”。

textToPrint 这个变量存储了 “Hello World” 这个值。

“Hello World” 这个值的类型视文本类型,在编程语言中,文本类型的专业叫法叫做字符串类型,变量除了有字符串类型还有整数类型、实数类型、逻辑真假类型和自定义类型。

变量的功能非常简单,但是与编程中的其他概念配合后会变得很复杂,数量也会变得非常多,这样就会在一名开发者几个月后重新查看代码或者将代码转交给别人时,变量的可读性变得尤为重要。

而变量的可读性主要体现在变量的命名上,而主要的难度也在变量的命名上,如何做到变量的名字在几个月后还是一目了然时编程中时时刻刻要思考的问题。

好了,大概介绍了下变量的功能和难点,接下来介绍一些 C# 的变量的内容。

首先,是什么让 textToPrint 成为了一个变量?

答案很简单,就是 var 关键字:

var textToPrint = "Hello World";

如果没有前边的 var 关键字,那么 textToPrint 就不是变量了,具体是什么,笔者也不知道,应该是啥也不是了。

var 是 variable 的缩写,variable 就是变量的意思,百度翻译解释如下:

image-20231002164656496

变量就是用来改变的,就像我们的输出十次 Hello World 的例子一样:

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

public class FirstGameObject : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        var textToPrint = "Hello World";
        
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint);
        
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

如果我们想要输出十次 Hello World 改成输出十次 Hello C#,那么我们只需要改动变量的值即可:

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

public class FirstGameObject : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        var textToPrint = "Hello C#";
        
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint);
        
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

这非常符合变量是可以改变的定义。

好,回到整体,var 关键字规定了谁是变量。

那么是什么规定了变量的类型呢?

答案就是等号后边的值,即:“Hello C#”

var textToPrint = "Hello C#";

C# 这门语言会自动检测等号后边的值是什么类型,在这里是字符串类型,即 string 类型。

当然我们也可以给 textToPrint 指定类型,代码如下:

string textToPrint = "Hello GDScript";

如果我们指定别的类型,代码编辑器就会报错,比如:

image-20231003162111266

比如笔者这里制定类型为 int,但是接受的值为 string 类型,那么就会报错:

不能将源类型 ‘string’ 转换为目标类型 ‘int’。

这句报错人类应该是能够看懂的。

这也是笔者想要介绍的,即一个变量制定好了一个类型,之后就不能存储其他类型的值了,当然大部分编程语言都是这样规定额度。

大家到这里会发现,等号不是等于的意思,而是赋值的意思,var textToPrint = “Hello World”; 意思是把 “Hello World” 这个值赋予给 textToPrint 变量,或者可以理解成把 “Hello World” 这个值存储到 textToPrint 变量里。

如图所示:

image-20231003162951369

在我们定义并赋值完变量之后,再次修改或者访问就不用在写一遍 var 关键字了,代码如下:

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

public class FirstGameObject : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        var textToPrint = "Hello C#";
        
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint);

        textToPrint = "Hello Unity";
        
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
        print(textToPrint); 
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

运行之后结果如下:

image-20231003163206869

好了,这一篇就是关于变量的一个简单介绍,这一篇的内容就到这里,我们下一篇再见,拜拜。

知识地图

image-20231003164039775

更多内容

更新期间半价,保持 60% 的内容免费更新到此平台
版权所有 GamePix 独立游戏学院
转载请注明凉鞋的笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—137.只出现一次的数字II【中等】

2023每日刷题&#xff08;二&#xff09; Leetcode—137.只出现一次的数字II 没有满足空间复杂度的Map题解 class Solution { public:int singleNumber(vector<int>& nums) {unordered_map<int, int>count;for(int iter: nums) {count[iter];}int ans 0;for(…

混凝土板材及砌块生产线数字孪生可视化管理系统,实现智慧工厂车间智能化数字化管理

混凝土板材及砌块生产线数字孪生可视化管理系统&#xff0c;实现智慧工厂车间智能化数字化管理。随着国家智能制造的高质量快速发展&#xff0c;生产线数字孪生可视化管理系统已成为企业管理中不可或缺的一部分。巨蟹数科利用数字孪生平台开发建模和VR虚拟仿真技术&#xff0c;…

C4D 2024插件Arnold mac(C4D S2024阿诺德渲染器) 中文版介绍

Arnold for Cinema 4D mac是一款先进的蒙特卡洛光线追踪渲染器&#xff0c;专为动画长度和视觉效果的需求而打造。C4DtoA 4.6.6.1 使用Arnold 7.2.4.1&#xff0c;是一个错误修复版本。带来了对 Cinema 4D 2024 中 OCIO 颜色管理的支持、对 OSL 元数据支持的改进和一些错误修复…

CSS记录

1.标准的CSS的盒子模型&#xff1f;与低版本IE的盒子模型有什么不同的&#xff1f; 标准盒子模型box-sizing: border-box; 宽度内容的宽度&#xff08;content&#xff09; border padding margin 低版本IE盒子模型&#xff1a;宽度内容宽度&#xff08;contentborderpaddin…

pip install AE 报错 Preparing metadata (setup.py) ... error

环境配置&#xff1a; ubuntu 18. python 3.7 1. 问题描述&#xff1a; 运行图像编码算法时 GAACNN时&#xff0c;提示AE模块不存在。尝试安装时&#xff0c;报错如下&#xff1a; Pip install 时报错&#xff1a; 2. 解决办法 &#xff08;1&#xff09;文件修改 进入GA…

开源游戏引擎和模拟器的项目合集 | 开源专题 No.38

yuzu-emu/yuzu Stars: 26.2k License: GPL-3.0 yuzu是一款全球最受欢迎的开源Nintendo Switch模拟器&#xff0c;由Citra创建者编写。它采用C语言编写&#xff0c;并具有可移植性&#xff0c;在Windows和Linux上进行积极维护。该模拟器能够全速运行大多数商业游戏&#xff0c…

接口测试面试题整理​​​​​​​

HTTP, HTTPS协议 什么是DNSHTTP协议怎么抓取HTTPS协议说出请求接口中常见的返回状态码http协议请求方式HTTP和HTTPS协议区别HTTP和HTTPS实现机有什么不同POST和GET的区别HTTP请求报文与响应报文格式什么是Http协议无状态协议?怎么解决HTTP协议无状态协议常见的POST提交数据方…

【PXIE301-211】基于PXIE总线的16路并行LVDS数据采集、4路低速、2路隔离RS422数据处理平台

板卡概述 PXIE301-211A是一款基于PXIE总线架构的16路高速LVDS、4路低速LVDS采集、2路隔离RS422数据处理平台&#xff0c;该平台板卡采用Xilinx的高性能Kintex 7系列FPGA XC7K325T作为实时处理器&#xff0c;实现各个接口之间的互联。板载1组64位的DDR3 SDRAM用作数据缓存。板卡…

Datawhale-新能源时间序列赛事学习笔记(1)

1.赛题描述 在电动汽车充电站运营管理中&#xff0c;准确预测充电站的电量需求对于提高充电站运营服务水平和优化区域电网供给能力非常关键。本次赛题旨在建立站点充电量预测模型&#xff0c;根据充电站的相关信息和历史电量数据&#xff0c;准确预测未来某段时间内充电站的充电…

COCO数据集解析

介绍 官网&#xff1a;https://cocodataset.org/ 下载地址&#xff1a;https://cocodataset.org/#download COCO的全称是Common Objects in COntext&#xff0c;起源于微软于2014年出资标注党的Microsoft COCO数据&#xff0c;与ImageNet竞赛一样&#xff0c;是计算机视觉领域…

通讯协议学习之路:RS422协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 一、…

京东店铺公司名爬虫

内容仅供学习参考&#xff0c;如有侵权联系删除 先通过京东非自营的店铺名拿到的公司名&#xff0c;再通过公司名称去其他平台拿到联系方式&#xff08;代码省略&#xff09; from aioscrapy.spiders import Spider from aioscrapy.http import Request, FormRequest import dd…

【LeetCode75】第七十四题 每日温度

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个数组&#xff0c;表示每天的温度&#xff0c;要我们返回一个同样长度的数组&#xff0c;答案里装着当前气温的下一个更高气…

Linux用户管理与远程管理

一、用户管理 1、回顾用户组管理 groupadd &#xff1a;组添加 groupmod&#xff1a;组修改 groupdel&#xff1a;组删除 与用户组相关的文件/etc/group&#xff0c;一共拥有4列 itheima:x:1000: 1-组名称 2-组密码 3-组编号 4-组内用户信息&#xff08;这个组必须是这个…

阿里云优惠口令(2023更新)

2023年阿里云域名优惠口令&#xff0c;com域名续费优惠口令“com批量注册更享优惠”&#xff0c;cn域名续费优惠口令“cn注册多个价格更优”&#xff0c;cn域名注册优惠口令“互联网上的中国标识”&#xff0c;阿里云优惠口令是域名专属的优惠码&#xff0c;可用于域名注册、续…

微信公众号粉丝迁移步骤?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移是将原公众号的粉丝、违规记录、文章和素材库&#xff08;可选&#xff09;迁移至一个新的公众号。整体流程较为复杂&#xff0c;需花费7-10天。通过公众号迁移功能可以将A账号的粉丝、文章素材&#xff…

ROS工具RViz可视化3D空间的一些错误的解决方案

1、引言 RViz是ROS的一个可视化3D空间的工具&#xff0c;它用于帮助用户在ROS系统中导航、查看和交互。RViz可以显示来自各种ROS节点的信息&#xff0c;例如传感器数据、机器人的状态和路径等。通过RViz&#xff0c;用户可以以图形方式查看和交互各种ROS数据&#xff0c;非常直…

连锁药店的自有品牌之争:老百姓大药房能否突围?

文丨新熔财经 作者丨楷楷 近年来&#xff0c;随着医保谈判药品的“双通道”&#xff08;即消费者可在有资质的药店买到新进医保的创新药&#xff09;&#xff0c;以及“门诊统筹”将药店纳入医保报销等医改政策出台&#xff0c;药企开始重新重视起零售药店渠道&#xff0c;很…

C++对象模型(18)-- 函数语义学:函数调用过程

1、栈帧结构 函数执行是通过系统栈来实现的&#xff0c;系统栈分为若干个栈帧。 栈帧就是函数运行的环境&#xff0c;每个函数在被调用时都会在系统栈区形成一个叫栈帧的结构。一次函数调用相关的数据保存在栈帧中&#xff0c;比如函数参数、函数的局部变量、函数执行完后的返…

Leetcode 21 合并两个有序链表 (链表)

Leetcode 21 合并两个有序链表 &#xff08;链表&#xff09; 解法1 复杂的第一版本&#xff08;优化大于和等于合并见方法二&#xff09;解法2 注意注意&#xff1a;先添加元素toadd.next list1&#xff0c;添加之后才可以移动指针toadd toadd.next 解法1 复杂的第一版本&a…