数字计算的学习
一.对变量类型的认识
变量类型
变量GameObject
字符串string
整数int
小数float
布尔bool
将上节课的内容放在文件夹1中,新建文件夹2,创建脚本number
字符串类型变量
需要使用到打印的方法Console面板中查看效果
void Start()
{
print("Orange");//将Orange打印到Console面板中
Debug.Log("Taike");//另一种打印方法,两者实质上相同
}
这样就会在Console中打印生成Orange和Taike;print是Debug的简单封装写法
整数int
小数float
小数必须要在后面加上f,否则报错
布尔bool
一般两个结果true/false通常用来判断状态
相关代码展示如下:
void Start()
{
int a = 3;
float b = 0.3f;
bool c = true;
print("Orange");//将Orange打印到Console面板中
print(a);
print(b);
print(c);
}
int整数类型转化为字符串类型?
void Start()
{
int a = 3;
string b;
b=a.ToString();//转换方法
print (b);
}
此时会在Console会生成一个“3”但不是int类的3而是string的3
字符串类型如何转化为int类型?
string c = "30";//注意此时的30必须要用引号引起来
int d;
d=int.Parse(c);//转换方法
print(d);
二.计时器及加减运算
1.创建一个计时器脚本
public float a;//使用小数类型来计算开始计时时间(在public class中)
a = 60;//从60秒开始计算(在void start中)
a -= Time.deltaTime;//每秒钟a的数值减少1(在void Update中)
此时点击播放会时间倒计时精确到了小数点后五位
2.对时间的倒计时进行四舍五入的代码
public float b;//因为a的类型是小数,所以b的类型也得是小数(在public class中)
b = Mathf.Round (a);//此时四舍五入到没有小数点(在void Update中)
如何对计时器中的数值精度进行设置
将a x10再进行四舍五入,进行四舍五入后再除以10(100等)如
public float c; (在public class中)
c = Mathf.Round(a * 10)/10; (在void Update中)
代码如下:
public class jishiqi : MonoBehaviour
{
public float a;//使用小数类型来计算开始计时的时间
public float b;//因为a的类型是小数,所以b的类型也得是小数
public float c;
void Start()
{
a = 60;//从60秒开始计算
}
// Update is called once per frame
void Update()
{
a -= Time.deltaTime;//每秒钟a的数值减少1
b = Mathf.Round (a);
c = Mathf.Round(a * 10)/10;
}
}
算数:加减运算和字符串的运算、string的运算
public class suanshu : MonoBehaviour
{
int a = 10;
int b = 20;
float A = 10;
float B = 20;
int c;//加法
int d;//乘法
float e;//小数除法
int f;//整数除法
string st;//string字符串的运算
string daying;//需要打印在Console的代码
void Start()
{
c = a + b;
d = a * b;
e = A / B;
f = b / a;
st = "taike";
daying = st;
print(c);
print(d);
print(e);
print(f);
print(daying+"zaixian"+c);//string的字符串的内容加减,因为st已经进行了双引号的书写,所以daying无需添加引号,但是string字符串是需要添加引号的
}
void Update()
{
}
}
随机数的案例(方法较笨)
在想要的区间里获取一个想要的数字
public class suijishu : MonoBehaviour
{
public int a;//先设置一个公共变量a
void Start()
{ }
void Update()
{
if (Input.GetKey (KeyCode.Mouse0 ))//若鼠标点击
{
a = Random.Range(0, 5);//a在0-5之间进行随机选取。这是一个包括0但是不包括5的整数;若是小数则都包括。
}
}
}
案例
- 创建5个Cube物体可以使用Ctrl+D复制
- 当随机到了的物体向上移动一个单位
- 代码如下:
public class suijishu : MonoBehaviour
{
public int a;//先设置一个公共变量a
void Start()
{ }
void Update()
{
if (Input.GetKeyDown (KeyCode.Mouse0 ))//若鼠标点击,则会触发效果,如果没有Down则鼠标移动就会产生产生效果
{
a = Random.Range(0, 5);//a在0-5之间进行随机选取。这是一个包括0但是不包括5的整数;若是小数则都包括。
GameObject.Find(a.ToString ()).transform.Translate(0, 1, 0);
//找到数字代表的正方体,位置上移动1大小
}
}
}
永久数据的储存 代码:PlayerPrefs.SetInt
public class setint : MonoBehaviour
{
public int a;
void Start()
{ }
void Update()
{
if(Input.GetKeyDown (KeyCode.Mouse0 ))
{
a++; //当单击鼠标左键数值加一
if (a>PlayerPrefs.GetInt ("Player Score "))
PlayerPrefs.SetInt("Player Score", a);//存储数据。setint将整数存储到player Score文件中,此时是存储永久数据,这样就不会被清除
print(PlayerPrefs.GetInt("Player Score"));
}
}
}
案例:单击左键得一分,判断是否为最高分,若是,则进行存储
public class setint : MonoBehaviour
{
public int a;
public int b;//调用文档
void Start()
{
if (PlayerPrefs.HasKey("Orange") == false)//判断是否存在Orange文档记录分数
{
PlayerPrefs.SetString("x", "0");//如果不存在则将分数记为0
}
}
void Update()
{
if (Input.GetKeyDown (KeyCode.Mouse0 ))
{
a++; //当单击鼠标左键数值加一
if (a > PlayerPrefs.GetInt ("Orange"))//若a大于已经存在的数值则进行储存,若没超过则不发生任何变化
{
PlayerPrefs.SetInt("Orange", a);//存储数据。setint将整数存储到player Score文件中,此时是存储永久数据,这样就不会被清除
}
print(PlayerPrefs.GetInt("Orange"));//输出最高分
b = PlayerPrefs.GetInt("Orange");//调用最高分,在属性面板显示最高分数
}
}
}