unity脚本实用技巧

来源:互联网 发布:综琼瑶 知君用心 编辑:程序博客网 时间:2024/06/07 00:10

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

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 original, Vector3 position, Quaternion 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.     unity中保存数据的几种方法: 1)PlayerPrefs 2)ScriptableObjects  3)DataBases 4)custom data file

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

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

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

          2.Cell Size(单个大小)

      3.Spacecell间隔)

      4.cell组开始布局的角

      5.Start Axis(布局横纵向)

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

12.  CanvasCanvas Scaler组件中的 UI ScaleModeUI储尺寸模式):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加一个CanvaseGroupanimator组件,在animation中创建新动画,点选一个时间点将canvase group中的Alpha设置为01

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

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

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

29.canvasUI的自适应:把锚点拖到对应的四个蓝色实心点上。更改canvas scaler属性为如图:  其中Match为0时表示竖屏,1时表示横屏

 

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

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

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

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

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

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

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

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

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

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

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 gucci白鞋掉皮怎么办 深圳摇不到车牌怎么办 车辆换牌照需要怎么办 商标申请有异议怎么办 唯品会账号被冻结怎么办 易直播回放收费怎么办 手机屏幕被摔了怎么办 xp调分辨率黑屏怎么办 公司logo被盗用怎么办 商标注册证掉了怎么办 商标注册证书丢了怎么办 市场监督管理局罚款怎么办 东莞居住证掉了怎么办 工商注销了税务怎么办 楼道自来水爆了怎么办 工商证没年检怎么办 工行信用卡被锁怎么办 外地卡密码锁了怎么办 营业执照年审过期了怎么办 工商营业执照吊销了怎么办 小规模企业工商年检怎么办 血流变检查偏高怎么办 信誉卡没有邮箱怎么办 税务年报没报怎么办 工商忘记年审了怎么办 营业执照脱审了怎么办 公司年审没有弄怎么办 车检标志丢了怎么办 机动车年检丢了怎么办 汽车保险标志丢了怎么办 车辆年检贴丢失怎么办 车检标贴丢了怎么办 检验标贴丢了怎么办 小车换年检标志怎么办 职称证忘记审验怎么办 联合年报没报怎么办 职称年审过期了怎么办 嘉兴驾模预约怎么办 电大考试去不了怎么办 负债高怎么办房贷 宁波鄞州银行卡怎么办