【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#脚本:绑定在碰撞的两个物体上即可,会自动识别函数。

 

posted @ 2018-05-07 14:04  黄译萱  阅读(211)  评论(0编辑  收藏  举报