Unity、C#中使用的类型总结
Unity,C#で使う型まとめ
前言
这篇文章是一个刚开始用 Unity 半年的人(而且编程经验也不长)在制作游戏的过程中,把学到的东西总结出来的。
其中可能有几处是错的,还请宽容看待。
使用環境
Unity:6000.4.3f1(Unity 6.4)
C#:9.0
话说类型是什么?
在 Unity 中使用时几乎必定会用到的多种多样的类型。
先说结论,类型表示的是变量所能处理的数据种类
例如
private GameObject door;
private int missCount = 0;
从目前使用的代码中摘录一段来看
GameObject是处理 Unity 场景内对象的
int是处理整数的类型。
紧接其后的door和missCount就是变量名。
关于变量,我打算之后再总结。
这次就来总结一下其类型的种类。
C# 的基本类型
| 型 | 用途・种类 | 例 |
|---|---|---|
| int | 整数 | int day = 0; |
| float | 小数 | float speed = 3.5f; |
| double | 精度更高的小数 | double speed = 1.2345678912; |
| bool | true/false | bool isMoving = true; |
| string | 文字列 | string name = "player"; |
| char | 1文字 | char initial = 'A'; |
这里令人关注的是
- float 和 double
- string 和 char
关于这些类型该如何区分使用。
查到的结果是,float 的有效位数约为6〜9位,double 约为15〜17位。
这并不是指「能表示到小数点后第几位」,而是数值越大,小数部分就越难以精细表示。
另外,即使是像 0.1f 这样短的小数,有时也会产生些许误差。
在 Unity 中,坐标等使用的是 float,因此日常的移动和速度用 float,需要更精确的计算时用 double,似乎可以这样区分使用。
参考:Microsoft Learn:浮点数类型
顺带一提,3.5f 末尾的 f 是「这个数值是 float 型」的标记。
关于string和char,虽然只是字符串还是一个字符的区别,
一时没想到有什么地方用char更好,但看来
在逐字符处理的时候使用它比较好。
例如,在检查文章中是否包含“?”时似乎很有用。
Unity的对象和功能的类型(UI以外)
| 型 | 用途・种类 |
|---|---|
| GameObject | 游戏对象本体 |
| Transform | 位置、旋转、缩放 |
| Rigidbody / Rigidbody2D | 物理运动(比如重力) |
| Collider / Collider2D | 碰撞检测 |
| Animator | 动画 |
| AudioSource | 声音的播放源 |
| AudioClip | 声音本身 |
| Camera | 摄像机 |
| SpriteRenderer | 2D 图像的绘制 |
| Sprite | 2D 图像本身 |
| MeshRenderer | 3D网格的渲染 |
UI使用的类型
using UnityEngine;
using UnityEngine.UI;
using TMPro;
这次的类型名是以根据需要先写好上述 using 为前提的。
| 型 | 用途・种类 |
|---|---|
| 按钮 | 按钮 |
| Image | UI 的图片 |
| Slider | 滑动条 |
| RectTransform | UI的位置和尺寸 |
| TMP_Text | 文本 |
| TMP_InputField | 文字入力欄 |
上表中的内容是GameObject的组件(功能)。
UI也是GameObject,因此可以通过Transform来移动。
此外,如果以 Button 类型获取,就可以更改按钮是否可按下。使用 RectTransform 时,除了UI的位置和尺寸之外,还可以设置锚点和边距等。
顺便说一下,关于Sprite和Image的区别
Sprite是图像数据,而Image是使用它的UI部件。
就是这样的区别。
使用方法上,设置想要在Image中显示的Sprite来使用。
打个比方,Image是连同画框一起挂在墙上的画。
Sprite则是装在里面的画本身,大概这种感觉。
同一个 Sprite 也可以设置到多个 Image 上显示。
参考:Unity官方:Image
总结
仅这次总结的内容就已经相当多,但恐怕还有更多。
因为很难调查并记住全部内容,
所以先大致了解“有这种模式”,需要时再去查就好。
另外,今后在制作时如果意识到可能存在组件特有的功能,或许会更好。
附加宣传
目前我正在一个名为 UMINEKOWalKing 的游戏制作团队中,
用 Unity 制作一款以灵异照片为主题的 2D 恐怖 ADV 游戏【BLACKOUT:Fatal Exposure】。
这次也是制作这款游戏过程中所调查内容的总结。

如果您有兴趣,希望您能看看 X 等平台。
UMINEKOwalKing X 账号
Steam 页面(体验版发布中!)
来源:Qiita · Unity 开发社区 · qiita.com