说一下Jtro的开发杂记

1.

当高版本(unity2018)的项目迁移到低版本(unity2017)中的时候,需要将项目中的“Packages”文件夹中的json文件删除并让它重新生成。

2.

2d图片的位置跟随3d物体的位置:
Update中写:

 Images.rectTransform.position = Camera.main.WorldToScreenPoint(pointImage.position);

3.

有时候unity打开奔溃,将包中的library文件夹删除重新生成即可。

4.

webgl打包的时候,在playersetting中 compression format选择broli模式
与enable exceptions中选择none,这样打出来的包占用空间会小。

5.

在Unity中,那些Shader中被设置为“Geometry” 队列的对象总是从前往后绘制的,而其他固定队列(如“Transparent”“Overla”等)的物体,则都是从后往前绘制的。这意味这,我们可以尽量把物体的队列设置为“Geometry” 。

6.

天空盒旋转:
在任意一个脚本中加入如下代码:

float num;
    private void Update()
    {
        num = RenderSettings.skybox.GetFloat("_Rotation");
        RenderSettings.skybox.SetFloat("_Rotation", num + 0.005f);
}

7.

使用canvas上的自适应排版 canvas上的canvas scaler中UI scaleMode选择scale with screen size ,referencce resolution 选择当前的分辨率,例如1920*1080,screen match mode 选择expand。

8.

Text组件中如果text中的字是变化的,添加contentsize fitter组件,将组件中的2个选项都选为preferred size。可以根据字数改变text的组件大小

9.

在编辑视口中,选择将要编辑的物体,按下V键,然后可以选择中物体的临时中心点,这个中心点可以移动旋转操作。

10.

你在photoshop中把图片转换为web所用,可以看到压缩选项。这样的压缩实际上是去掉了原图片中的很多色彩信息,这样会使图片占用的空间变得更小

11.

Dotween中让一个数字从一个值变化到另一个值:
声明myFloat
DOTween.To(() => myFloat, x => myFloat = x, 5.5f, 1);
在1秒中,从默认的值变化到5.5

12.

当你的显卡是N卡,而且装的驱动不是gameready ,那么你的unity很可能开启之后会假死,这个时候你需要将显卡驱动控制面板打开,并且将驱动换到gameready就可以了。

13.

当动画师给你的动画文件你看到的效果和动画师调的效果不一致时,试试点击模型到inspector面板中的animation中的anim.compression中选择Optimal选项

14.

如果想在update中运行一段代码的时候,你不必在update中写那么一大段的代码,

使用委托
private Action prgCB = null;

void Start ()
{
 prgCB = () => {
          //do something...
        };
}

void Update ()
{
prgCB ();
}

15.

playerprabs使用方法: https://www.cnblogs.com/planezhong/p/10061977.html

16.

字符串“”与null的区别,虽然都是代表没有任何东西,但是“”表示在内存中有这个字符串,而null表示内存中没有为此字符串分配空间。

17.

字符串“”与null的区别,虽然都是代表没有任何东西,但是“”表示在内存中有这个字符串,而null表示内存中没有为此字符串分配空间。

18.

excel的开发工具:在文件->选项->自定义功能->(主选项卡)开发工具

19.

如果有一天,当你打开unity安装了VS,然后发现你使用vs的时候在输入Ontrigger这类函数的时候发现没有了智能提示,你需要重新在unity中指定unity打开脚本的方式。

20.初始化类中的参数

比如你的类:

public class A 
{
    string Str = "";
}

一般的引用会是这样:

首先是new一个出来
A a = new A();
      a.Str = "Hello";

也可以写成这样

A a = new A{
      Str = "Hello"//注意,这里不能加分号,如果多的话用逗号隔开,因为一个分号代表一行代码
};

21.修改物体的层级

  int count = Panels.transform.childCount;
  panel_syz.transform.SetSiblingIndex(count - 0);
  //注:Panels是panel_syz的父物体.

22.鼠标悬浮button的功能

//改写button组件的底层
using UnityEngine.UI;
public class overButton : Button
{
    public Text showtxt;
      
    protected override void DoStateTransition(SelectionState state, bool instant)
    {
     
        base.DoStateTransition(state, instant);
        switch (state)
        {
            case SelectionState.Disabled:
                break;
            case SelectionState.Highlighted:
                showtxt.gameObject.SetActive(true);
                break;
            case SelectionState.Normal:
                showtxt.gameObject.SetActive(false);
                break;
            case SelectionState.Pressed:
                break;
            default:
                break;
        }
    }
}

正文完