1.       如何在game模式下放大缩小视图:控制camera的size

2.       如何获取图片的长宽:background isa Gameobject

   

height =background.GetComponent<SpriteRenderer>().sprite.bounds.size.x;
        width =background.GetComponent<SpriteRenderer>().sprite.bounds.size.y;

3.       手指移动相机并限定移动范围

if (Input.touchCount > 0&&Input.GetTouch(0).phase ==TouchPhase.Moved)
   {       //if in certain range then move camera
  Vector2 touchDeltaPosition =Input.GetTouch(0).deltaPosition;
  ransform.position =  newVector3(transform.position.x-touchDeltaPosition.x* speed, transform.position.y-touchDeltaPosition.y * speed,-10);
  transform.position =  newVector3(Mathf.Clamp(transform.position.x,-move_rangewidth, move_rangewidth),Mathf.Clamp(transform.position.y, -move_rangeheight,move_rangeheight),-10);
        }

4.       每秒调用:InvokeRepeating(string methodName, float time, float repeatRate)

   methodName :要调用的方法 ; time:几秒后开始调用 ;  repeatRate: 每几秒调用一次

 注意:在Start()中使用

5. 如何通过标签find一个物体:GameObject.FindGameObjectWithTag()

6.       Instantiate(Object originalVector3 positionQuaternion rotation);

在position处创建一个旋转度为rotation的物体original

7.      触摸输入:

1)  Input.touchCount  获取触摸点数

2)  foreach( Touch touch in Input.touches)  //遍历触摸点数

3)  Input.GetTouch(0).phase == TouchPhase.Began  //一旦第一次触摸

PS: GetTouch( int index )   //index是类似触摸数组的指针

8.   Vector2.magnitude :求向量的长度

9.

10.  Unity中所有的UI都要放在Canvas中,不然没法渲染

11.  Ui中的Grid Layout Group组件(网格布局组):可以把UI当成组在一起操作。

属性:1.padding(垫充),影响ui组在网格中的的初始位置

          2.Cell Size(单个大小)

      3.Space(cell间隔)

      4.cell组开始布局的角

      5.Start Axis(布局横纵向)

      6.Child Alignment (网格中的布局位置)

12.  Canvas中Canvas Scaler组件中的 UI ScaleMode(UI储尺寸模式):1.ConstantPixelSize(尺寸恒定,使用像素大小模式)2.ScaleWithScreenSize(比例随屏幕大小改变模式)3.ConstantPhysicalSize(恒定外形尺寸,由物理单位指定大小)

13.  可以给Text添加outline/shadow组件,给字体添加效果

14.  Canvas的子物体如果显示过大,可以通过调节物体scale来调小

15.  物体变大:

Another method()
{
        StartCoroutine(Scale(newVector3(0.1f, 0.1f),newVector3(1, 1)));
   }
   publicIEnumerator Scale(Vector3 from, Vector3 to)
   {
       float progress = 0;
       while (progress <= 1)
       {
            transform.localScale =Vector3.Lerp(from, to,progress); //放大
            progress +=  Time.deltaTime;
            //print(progress);
            yieldreturnnull;
       }
       transform.localScale = to;
    }

 

16.设置物体的可见,可以使用函数 SetActive(bool) 

查看它的可见否属性使用 (bool) activeInHierarchy

17.防御范围可以用 Gizmos类中的Gizmos.DrawWireSphere()设置一个区域

18.鼠标移动屏幕:先设置一个float作为像素高,在if判断中Input.mousePosition的x,y 》= Screen.height–像素高  

19.  滚轮调节视角高度:

先设置一个滚动速度scrollspeed,然后接受一个float scroll来接受Input.GetAxis(“Mouse ScrollWheel”);

然后设置一个Vector3 pos接受相机位置;然后设置它pos.y-= scroll * sccrollspeed * Time.deltatime;

注意要限制相机的上下界,用clamp()函数。

20.  Physics.OverlapSphere:返回所有在区域区域中的collider[];

21.  快速调节物体到另一个物体的位置上:右击物体的Transform组件,选择copy component

22.  将实例化的对象放在一个空对象下:virus.transform.parent = Virusparent.transform;

23.  物体调成Debug模式时可以看到脚本参数的变化

24.  暂停和继续:Time.timeScale = 0f; Time.timeScale = 1f;

25.  场景的加载: 调用UnityEngin.SceneManager中的LoadScene(string)函数,通过改变string实现想不同场景的跳转。

重新开始:SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);    调用当前活跃的场景。同时要设置        Time.timeScale = 1f;

26.  Panel的淡入淡出: 给panel加一个CanvaseGroup和animator组件,在animation中创建新动画,点选一个时间点将canvase group中的Alpha设置为0或1;

27.  给按钮加点击动画:将Button组件中的transition选项调成Animation,然后设置四个按钮状态的动画

28.  使用协程:StartCoroutine(method());

          IEnumeratormethod(){ yield return WaitForSeconds()}   协程和线程跳转有点像,在wait阶段将程序控制权交出,执行外部代码,当wait阶段完成后拿回控制权继续执行本段后续代码

29.canvas中UI的自适应:把锚点拖到对应的四个蓝色实心点上。更改canvas scaler属性为如图:

 

30.  场景自适应问题:改变相机视口。

实际视口 =初始视口 *初始高宽比 /实际高宽比

31.实现场景的淡入淡出效果:

   首先创建一个canvas,在其下创建一个image并自定义它的颜色。

   然后写一个脚本贴在canvas上。

   脚本中需要拿到image,并且声明一个AnimationCurve.在Start中使用协程调用淡入、淡出函数。

31.  再update()中调用有协程的函数注意点“:

     因为是每帧调用的所以要设置一个bool判断条件再调用有协程的函数,并且随后置反,再协程中再置回。

32.  实现血条:添加Slider,将canvas的坐标改为世界坐标,Slider中的子类物体只留下Fill和background,并将Fill置为background子类,将Fill的Stretch改为随父类大小:Alt + 右下角最后一个。通过修改COLOR设置前置,后置背景的颜色。

33.单机游戏储存内容小,所以可以使用assess数据库。Access是一种只适合数据量少的应用的桌面数据库,处理少量和单机访问的数据库时效率会很高。

34.  使用DontDestoryOnLoad()时,要确保依附对象为单例模式。避免重复生成对象。最直观的反例就是场景切换后背景音乐重叠