栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

个人学习Uninty一周沉淀--第一篇

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

个人学习Uninty一周沉淀--第一篇

刚开始接触unity,通过视频和书籍进行学习,准备每周学习完后进行一次沉淀总结,如果有错误,希望大佬们指出

两个方法:

start()//运行该脚本只调用一次(描述感觉不正确),通常用于各种初始化

Update()// 每帧都在调用

FixedUpdate() // 定时调用的方法,默认是0.02s(有一次修改了这个值成1,发现运行起来后,game窗口刷新频率就变了,1s刷一次,感觉不能随便改啊)

碰撞检测:

        OnCollisionEnter(Collision collision); // 碰撞开始会触发这个方法;

        OnCollisionStay(Collision collision); // 碰撞后没有分开,一直粘着,就会持续执行这个方法

        OnCllisionExit(Collision collision); // 碰撞结束,就是分开了,会执行一次这个方法

可穿透的碰撞检测(碰撞的对象可穿透,不会影响自己的移动):

        OnTriggerEnter(Collider other);

        OnTriggerStay(Collider other); // 在碰撞对象的内部就会一直触发这个方法

OnTriggerExit(Collider other);

这边想要触发这个效果就必须吧把XXX Collider中的 Is Trigger打钩起来。

零零散散的小点:

预制体:一个方便修改属性的功能,通过这个功能在修改一些属性的时候,可以一起同步到所有预制体的实例对象。(粗浅理解,粗浅用法)

RigidBody 刚体组件,上面的碰撞检测与它有关:两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。

可以通过AddForce(Vector3)给他施加某个方向的力,让其移动

获取一个对象的方法:

GameObject.Find(string name).GetCompoment();

// 注意这边有个坑,如果Find找不到对象,直接调用Get会报错,类似空指针访问数据。

几个问题:

       1. 用Destroy删除对象,然后立刻判断是否找得到这个对象,返回的结果是找得到?

        原因是:因为Destroy是而是异步执行的,不会影响主线程的执行。所以,想要达成上面那个效果就得使用DestroyImmediate(顺序执行,删完再接着运行)。但是使用时又发现报错了,在碰撞检测中不能使用DestroyImmediate。

        2.我在脚本中挪动了对象的坐标,开始运行时,却发现物体没有被移动,但是Scence窗口中选中该物体,坐标却在移动。

        原因未知,虽然之后发现取消勾选了static,就回复正常了,但是之后我再勾选static,又无法复现。 static表示这个物体是静态的、不会移动。不过出现的情况和下面文章链接描述的相同意应该是这个原因

查阅文章:

Unity的inspector面板中static的作用_蹦蹦跳跳小米粒的博客-CSDN博客_unity中static的作用

Unity中使用Destroy删除游戏物体的大坑_zxy13826134783的博客-CSDN博客_unity删除物体

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号