vs快捷键:
回到上一个光标位置:使用组合键Ctrl + - 
前进到下一个光标位置:“Ctrl + Shift + - 查找:使用组合键“Ctrl+F”;
搜索 使用组合键Ctrl+i
复制一整行代码,Ctrl+C
剪切一整行代码,Ctrl+X
删除一整行代码,Ctrl+LCtrl+Enter:在当前行的上面插入一个空行; 
 Ctrl+Shift+Enter:在当前行的下面插入一个空行。 注释:组合键Ctrl+K+C 
 取消注释:组合键“Ctrl+K+U转小写:Ctrl+ U 
 转大写:CTRL + SHIFT + U


如果操纵rigidbody,脚本的具体操纵要写在void FixedUpdate(){}函数中

在unity4当中rigidbody.velocity直接去的rigidbody的速度是可以的然而在unity5当中这样写取不出rigidbody,这是因为unity5当中把语法规范化了,先 Rigidbody rigidbody;然后rigidbody = GetComponent<Rigidbody>();然后才能拿到.velocity

Android unity 返回 unity怎么返回上一步操作_c#

由于限定刚体位置的x在xMin,xMax之间,所以调用了mathf.clamp值,该函数的作用是取得xMin,xMax之间的值,打灰机项目中在update函数中添加这行代码可以永远控制飞机的位置不超出边界


在脚本中创建了2个类,但是在unity中只会显示monobehaviour类中的参数,我们需要把它可序列化

Android unity 返回 unity怎么返回上一步操作_ide_02

只需添加一行即可

Android unity 返回 unity怎么返回上一步操作_c#_03

这样unity中显示两个类的参数


飞船发射的子弹不希望有边边,在shader---->particles----->addictive这样就直剩子弹了

Android unity 返回 unity怎么返回上一步操作_c#_04


组件collider要使用Trigger检测物体进入,则需要勾选Is Trigger选项

Updata函数和FixedUpdate函数的区别:


Update是在每次渲染新的一帧的时候才会调用

FixedUpdate,是在固定的时间间隔执行,不受游戏帧率(fps)的影响

FixedUpdate的时间间隔可以在项目设置中更改,Edit->Project Setting->time 找到Fixed timestep。就可以修改了

在检测鼠标的上下左右键时可以卸载fixedupdate函数中


飞机一秒只发射4发子弹的代码;
public float fireRate=0.25f;
private float nextFire;
   if( time.time>nextFire  ){
     nextFire=time.time+fireRate;
     //具体操作
    。。。
   }
instantiate用法:
 
Instantiate(Object original, Vector3 position, Quaternion rotation); 


original是创建的对象,position是对象要放的位置坐标,rotation是旋转的角度。 

Quaternion的意思是四元数,用于代表旋转。 

Quaternion.identity的含义: 

transform.rotation = Quaternion.identity; 
mathf.Lerp插值运算,用于渐变 

 
 Mathf.Lerp(float ,float,float);//基于浮点数第三个参数返回第一个数到第二个数之间的插值,第三个参数限制在0~1之间。 

var minimum = 10.0;
var maximum = 20.0;
float a=Mathf.Lerp(minimum, maximum, Time.time)   // 在一秒内从minimum渐变到maximum一般运动的物体添加rigidbody属性,墙不用添加rigidbody 
在打灰机项目中控制飞机的移动这样操作。可以看到rigidbody.velocity是个向量,用平面的x,y轴的长度放到一个向量上乘以速度赋给刚体的速度 
float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 move=new Vector3(h,0f,v);
        rigidbody.velocity = speed * move;public GameObject bolt;  //发射子弹
 public GameObject spawnPosition; //发射位置
     void Update()
    {
        if (Input.GetButton("Fire1"))
        {
            Instantiate(bolt,spawnPosition.transform.position,spawnPosition.transform.rotation);
        }
    }如何让陨石实现自我旋转的:这里Random.insideUnitSphere函数是返回半径为1的球体内的一个随机点,这里rigidbody.angularVelocity是刚体的角速度向量,不是角速度长度,如果是角速度长度则是rigidbody.angularVelocity.magnitude  rigidbody.angularVelocity = Random.insideUnitSphere*5;打灰机是如何实现爆炸效果的:这里的playerExplosion当然在脚本外属性中把爆炸效果拖动到其中public GameObject playerExplosion;
     void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "feiji")
        {
            Instantiate(playerExplosion, this.transform.position, this.transform.rotation);
        }public GameObject[] xingXing;
	void Update () {
        if (Random.value<0.1)
        {
            Xiahua(); 
        }	}
    //陨石下滑函数
    void Xiahua()
    {
        GameObject o = xingXing[Random.Range(0,xingXing.Length)];
        Vector3 p = new Vector3(Random.Range(-vector.x,vector.x),vector.y,vector.z);
        Quaternion q = Quaternion.identity;
        Instantiate(o,p,q);
    }static List<int> GetInitialData()
{
  return new List<int>(){1,2,3,4};
}

static IEnumerable<int> FilterWithoutYield()
{
  List<int> result = new List<int>();
  foreach (int i in GetInitialData())
  {
 if (i > 2)
 {
   result.Add(i);
 } 
  }
  return result;
}

static IEnumerable<int> FilterWithYield()
{
  foreach (int i in GetInitialData())
  {
 if (i > 2)
 {
   yield return i;
 }
  }
  yield break;
  Console.WriteLine("这里的代码不执行");
}c#  coroutine:类似于Android延迟一段时间需要开辟新线程用法:StartCoroutine(函数名());IEnumerator  函数名(){
           yield return       ;}c#中需要强转,后面加  as 类型即可协程在执行到第一个yield return就不执行了,然后到第二帧执行到第二个yield return就不执行了,第三帧。。。找组件这样也可以啊//旋转刚体绕世界y轴
function FixedUpdate () {
	rigidbody.AddTorque (Vector3.up * 10);
}
transform.position = Vector3.Lerp(start.position, end.position, Time.time);正交Orthographic (无消失点投影)       正交视图无法看到一个物体是远离自己还是正在我们面前。为什么?因为它不会根据距离收缩。所以如果你如果你画一个固定大小的物体在视点前面,同时画一个同样大小的物体在第一个物体的远后方,你无法说那个物体是第一个。因为两个都是一样的大小,根距离无关。他们不会随着距离而收缩。通常我们在unity中制作2D UI,或是2D游戏的时候,就会把Camera的投射选择此项,例如NGUI的UICamera组件,默认的视图就是正交,还有2DTookit,也会把Main Camera的视图选择成正交

透视Perspective (有消失点投影)       透视视图和我们从眼睛看到的视图是一样的。例如,一个高个子的人站在你面前,他看上去是很高的。但是如果这个高个子站在100米以外,他甚至还没有你的拇指大。他看上去会随着距离而缩小,但是我们实际上都知道,它依然是个高个子。这种效果叫做透视。上面例子中提到的两个物体,第二个物体将会显示地更小,所以我们可以区分哪个是离我们近的物体,那个是离我们远的物体。这个在3D中经常用到,例如3D Max中几种不同的视图,而Unity的Main Camera默认也是这种视图。切水果游戏的一些小总结:
当水果从屏幕下面出来要实例化一个水果,实例的位置在屏幕下面的中间位置,加上屏幕的左右一半的正负坐标要让水果向上走,需要两步,第一步,给它一个初始速度,第二,给它一个扭矩,推动它向上走他这里让水果每隔2秒产生一个就在start方法里面调用InvokeRepeating方法,每隔2秒调用Spawn方法产生一个水果如果报错这样:解决方法:如果在rigidbody中没勾选is Kinematic那么要在mesh Collider中勾选Convex来说下切水果手指滑动怎么判断切到水果,视频中讲的是手指滑动的线上每一点像镜头里面发射一条射线,如果射线穿过水果,就判断切到,具体方法如下:start.x,end.x都是鼠标移动得到的坐标,在屏幕的坐标,需要转成世界坐标,所以用Camera.main.ScreenToWorldPoint函数,这里如果不知道a的接收变量的类型,选用var接收,相当于java中的object添加一个Gameobject添加Line Renderer属性,把切水果的划痕材质拖到里面,在Line Renderer属性中有个Position,意思是在线段中设置几个点,我们设10个点在里面,当然如果你想通过捕获当前鼠标按下的坐标,然后触发碰撞检测事件来判断碰撞,这样不行,因为鼠标按下每一帧都会捕获,也就是每一帧都会返回一个坐标,我们应该让采样慢点,也即鼠标滑了0.1f距离捕获一次坐标。将这个坐标保存到一个大小为9的数组中,采样一次数组更新一次(计数+1),队列向前移动一个单位,具体代码如下:我们拿到了0.1f划痕采样的10个点,接着,遍历10个点,射线检测看有没有碰到水果我们看到在每两个点之间,这里又分成了若干段,通过插值函数vector3.lerp来对每一段进行射线检测,最后还要记得把数组中的点传到Line Renderer属性中的Position中在另一个项目中,通过屏幕滑动拿到局部坐标的api是这样只要在屏幕上滑动就会不断返回二维坐标AI系统:自动攻击和自动寻路