随笔
来源:互联网 发布:audition cc 2018 mac 编辑:程序博客网 时间:2024/06/06 03:06
原本是一个月写两篇来记录下的(出了点意外。。。),这次我将最近get到的一些技能点(也不算是知识点,只是自己的感受)大概做些简单总结和梳理(反正是给自己看的<_<,为了以后的我看到自己写的就知道自己进步了没~~)
里面的代码有些是我以前做的东西里面的,有些是伪代码。
变量
1、变量能private的都private
private Sprite[] left_images_Sprites; //左边的sprite private Sprite[] right_images_Sprites; //右边的sprite private int[] randomInt; private Vector3 pos; //parent的相对位置 private List<Vector3> posList; //对应每个复制体的位置
2、需要控制的scene里的物体,可以先public,然后考虑再private
(主要是方便以后改,不然每次改下都要到scene里去拖,如果多了,就有点烦了)
private GameObject main; //主界面 public Button button; //退出按钮 public GameObject perfab; public Transform parent; //复制体的父物体
3、变量的初始化,一般就放在awake里面,当然有些也不一定
void Awake() { randomInt=new int[]{-1,1}; main = GameObject.Find("Main"); pos=parent.position; posList=new List<vector3>(); ...... }
4、在有些脚本里的变量需要其他脚本知道,一般就是把他给弄成public static或者public,这个如果是单例public可以了,如果不是
的话public的变量一般就需要通过gameobject上的脚本来获取。
public static int leftCount, rightCount; //分别得到左右图片组的数量
xxx.GetComponent<xx>().x
5、如果某些值需要反复使用,就把这个值放在一个变量里(好处就是这个值变了只需要改变变量的值就可以了)
函数
1、把实现某个功能的一些语句放在函数里,如果函数很长的话也最好能把他拆分下。
void Update(){ 想象一下一堆逻辑代码。。。}
//把对应逻辑放在对应函数里,看起来感觉清爽得多,也方便修改logic1();logic2();logic3();
2、像ref,out这些关键字的使用
string getString(){...... return xxx;}//在这里我不仅要得到string,我还想同时得到其他有关值,比如string的某个字符的下标int index=getXIndex(); //这样也可以,只不过又调用了一个函数//可以改成这样int index;getString(out index); //这样就只调用了getString(),就不需要getXIndex了
协程
协程是个好东西,但没用好就完了。
1、常用的,比如倒计时,yield等待一秒
2、用协程来加载资源,这里要提的是,不要用协程加载那些点击就出来的资源(如果资源很小但无所谓,稍微大点就有问题了)
资源加载
在unity里有些特殊的文件夹(记不起来了,就查下文档),就比如这个StreamingAssets,(考虑文件不是特别多的情况)主要是由于资源不是一成不变的,有了这个文件夹就可以随时更换内容
1、将文件名和对应的绝对路径存在变量里
string path=Application.StreamingAssetsPath+"/"; //Application.StramingAssetsPath就是StreamingAssets的绝对路径public Dictionary<string,string> xxx=new Dictionary<x,y>();//文件名就是key,绝对路径就是value
2、将文件名和对应的内容(以流或其他形式)存在变量里
public Dictionary<string,byte[]> name =new Dictionary<string,byte[]>(); //当然也可以static,视情况而定了public static Dictionary<string,xxx> name=new Dictionary<string,xxx>(); //xxx就是其他形式,比如Gameobject,sprite......等等
XML
在资源加载中,文件名就是从xml文档中得来,然后就可以写个专门的脚本用来负责读取xml文档,用单例模式
using xxxx......public class xxxXml:xxx{public static xxxXml instance;void Awake(){instance=this;}public xxx getXXX(){}......}
Summary
1、Unity很多时候的代码都是在写脚本,前期就不要考虑太多,先把功能写出来,然后再优化,不要心怀一写出来就是不用改的,这个就像画画一样,也是先把轮廓给勾勒出来。
2、脚本里尽量都用函数,不要在函数外出现语句。
3、脚本里出现很多变量也是个头大的问题。
4、关于源码,以前以为我要读懂它的每一行意思,现在想想都觉得不咋现实(这技术得继续修炼##,反正阅读源码不要太过纠结,总是有目的的,所以才会去看)