初入unity开发的一些感想(一)

前端时间对unity开发感兴趣,再加上自己有一些charp的基础。就有了入门游戏开发的想法,跟住siki学院的一个2d贪吃蛇项目做完了(一个17年的项目)。今天来做些总结,不然该忘完了。也是游戏全部写完了,但是临门一脚的时候误点了一个文件。报错也找不到解决想法,所以是没有成品图啦hh。

unity对我的感觉就是,api封装的非常好,一些基本的逻辑需要在代码端实现。而且在那里面,脚本也是一种组件可以拖拽到对象上面,同时脚本中声明的公共属性,也可以从对象中拖拽过来进行实现。

看一下这段代码。public int step,也就是贪吃蛇的步长,这个在unity界面中是可以直接修改的。包括这里面的所有public声明的属性都是可以在unity里面修改的。

GamObject就是对象啦。

unity中也有父子关系,实现的非常简单。把子对象拖到父对象里面就可以了,就像是文件夹的那种包含关系一样。值得一提的unity中父对象是通过transform来实现的

body.transform.SetParent(bodyholder, false);//这是一个给body设置bodyholder为父对象的例子。

同时transform也是管理对象坐标的,这是重中之重。我们知道游戏中物体的运动都离不开坐标熬。

因为script脚本是挂在在unity对象上的,挂上就意味着对象可以使用这些脚本中的方法。

脚本中有三个自带的很重要的函数。分别是

void Awake();//醒来,比start快

void Start();//开始,顾名思义开始执行就有的,一些属性的赋值可以在里面进行

void Update();//update也就是帧更新,默认是每秒60次,也就是60帧。用time.deltatime表示一帧,我们更好的执行帧更新。

InvokeRepeating("move", 0, velocity);这个函数是重复定时器,三个参数。第一个是方法也就是函数,没错unity里面调用函数直接“函数名”这样的,第二个参数是等待时间,0就表示马上开始定时器。velocity是自定义的常量,也就是定时器的间隔。这里是每隔0.05f触发一次定时时间。

 public float velocity = 0.05f;

也有单次定时器

我们下面来看一个控制蛇移动的源码。

 private Vector3 headPos;//Vector3是一个三维类型,里面记录了x,y,z这样一个三维坐标

public List<Transform> bodyList = new List<Transform>();//一个<Transform>类型的list数组

    private void move()
    {

        private int x;
        private int y;
        headPos = gameObject.transform.localPosition;
        gameObject.transform.localPosition = new Vector3(headPos.x+x,headPos.y+y,headPos.z);
        if(bodyList.Count>0)
        {
            for(int i = bodyList.Count-2;i>=0;i--)
            {
                bodyList[i + 1].localPosition = bodyList[i].localPosition; 

//后面的蛇身依次跟随
            }
            bodyList[0].localPosition = headPos; 
        }
    }

这是一个实现按下空格使蛇身加速的功能,我们可以看到需要先取消定时器,再设置新的定时器。

        if(Input.GetKeyDown(KeyCode.Space))
        {
            CancelInvoke();
            InvokeRepeating("move", 0, velocity-0.2f);
        }

另外我感觉x.GetComponent<xxx>()这个获取组件的函数真的是重中之重。

Random.Range(x, y)还有这个随机数生成函数,多用于游戏道具的一些随机掉落。

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值