【unity D3】学习笔记(一)
全部来自雁回晴空的Unity3d入门教程,原地址:https://blog.csdn.net/zzlyw/article/category/6527790
1.打包成exe
ctrl+shift+B ,左下选择:
双击exe,选择画质即可运行。
2. unity的外部包、插件,是.unitypackage,通过file -> save the project -> 生成.package文件
3.C# 控制组件:
C#的生成:在project栏点击create -> C# script ,命名为motion,生成C#文件,双击C#文件,默认使用vs打开(在edit -> perference 中设置)其中包含类class motion 以及类中的两个函数:start() 和 update()
绑定到对应的组件的方式:1. 直接用鼠标把脚本拖动到Hierarchy视图或者Scene视图中对应的物体上即可。2. 也可以先选中物体,然后把脚本拖动到该物体Inspector视图的空白处。3. 在脚本中的start函数初始化时,根据视图中对象的名字,自动寻找。
PS:如果同一个C#中包含对全部组件的控制,那么就将C#脚本拖动到main camera的inspector视图的空白区,并注意脚本中的各变量名对应的实际视图中组件。
!!这里引号中的名字是视图中的真名字!!
4.简单UI的使用:texture贴图 、标签Label、 button、 文本框(用户名、密码)、滑动条
**他们都写在
void OnGUI()
{
}中
①texture贴图:在类中声明:public Texture tex; 在OnGUI(){}中: GUI.DrawTexture(new Rect(10, 50, 100, 80), tex); //绘制贴图
②标签Label: GUI.Label(new Rect(10, 10, 100, 30), "学习GUI"); //将字符串显示在屏幕上
③button:GUI.Button(new Rect(10, 200, 100, 30), "普通按钮") ,检测是否是这个按钮按下,直接放在if()中即可
④文本框:声明对象:String editName; 在start()中初始化为:editName = "请输入用户名"; 在OnGUI() 中:editName = GUI.TextField(new Rect(150, 40, 200, 30), editName, 15);
**如果文本框内容不能直接显示,需要加密,如密码:editPassword = GUI.PasswordField(new Rect(150, 80, 200, 30), editPassword, "*"[0], 15);
⑤滑动条:声明对象:float toolBarValue0; 初始化为:0 ; OnGUI()中:toolBarValue0 = GUI.VerticalSlider(new Rect(200, 200, 30, 100), toolBarValue0, 100, 0); // 由100 到 0 :左端为100,右端为0
PS:C#的控制台输出:Debug.Log("控制台输出");
5. UGUI 的使用:botton为例
新建 UI-> canvas (画布),新建 UI-> button ,将所需要的图标文件放在Asserts之中,在unity的assets中找到他们
1. 为按钮添加图片:
选中需要的图片,修改texture type 为:sprite(2D and UI) ,点击 sprite editor 即可
选中button,将生成的新图片拖到 inspector的source image 即可。
2. 为按钮添加点击事件:
写C#脚本中包含点击函数:OnClick(){} 然后将该脚本拖到该按钮上,然后在该按钮的inspector处找到这个地方,点击+ 添加点击事件,然后将该button拖到左下那个地方,
右上的function选择对应脚本里面的点击函数即可。
6.键盘鼠标的监听
写在update(){}事件中,因为每一帧都要检测:
【例如】
if (Input.GetMouseButtonDown(0))
{
Debug.Log("按下了鼠标左键");
}
其中:0代表左键,1 右键,2中键
//鼠标按下事件 :Input.GetMouseButtonDown(0)
//鼠标抬起事件: input.GetMouseButtonUp(0)
//鼠标长按时间:Input.GetMouseButton(0)
//键盘按下事件:
//按下空格:Input.GetKeyDown(KeyCode.Space)
//键盘抬起事件:Input.GetKeyUp(KeyCode.Space)
//键盘长按事件:Input.GetKey(KeyCode.Space)
7. 物理引擎之碰撞:
unity3d 自带物理引擎,即object自带有静态碰撞器(受到重力影响,但是不会影响别的物体的行为,如墙体);如果需要物理控制,那么添加“刚体”组件,就可以去碰撞别的物体。
即:如果要让两个物体发生碰撞,至少有一个物体要带有刚体组件。
碰撞器中:Is Trigger的意思是:触发器,作为碰撞时触发事件。
刚体组件 Rigidbody :
添加方法:选择需要添加刚体的组件,点击右下角的Add Component,搜索 rididbody
IsKinematic是运动学开关,如果启用,物体将不受物理引擎驱动,只能通过Transform来操作。Mass是质量,Drag和Angular Drag是阻力和角阻力,这些数值都是可以影响碰撞效果的。UseGravity是重力开关,打开就会响应重力,关闭则不响应。下面的CollisionDetection默认是Discrete(不连续检测)。最下面是Constraints,可以设置限制刚体的运动。
C#脚本:绑定在碰撞的两个物体上即可,会自动识别函数。