U3D问题,怎么在u3d updatee中加延迟

Unity3d操作的一些技巧知识点和BUG解决方案
自己记录一些东西,转载请良心注明出处。
1.如何同时打开两个UNITY3D项目。
有时候需要对比,或者需要添加另一个项目的某资源到目前项目,同时打开两个项目看起来会比较明了。如果直接打开的话,发现它说有重复项目已经被打开而提示错误不能打开。
此刻就需要设置一些unity preferences了,从edit处打开。勾上下图红圈圈就可以了,always show
project wizard(打开项目前永远显示项目向导)。选完这个之后每次打开就会让你选择项目路径了。
如果需要同一个项目打开在两个UNITY3D的话,那么需要下载不同版本的UNITY3D。
2.collider的碰撞检测,即便是在collider里面也一样触发。
上图是测试,原本所有面包都在蓝色方块上,有事件当面包触发到COLLIDER的时候会自动飞出。我动态生成了一个COLLIDER来包着面包,所有面包飞出。
transform.rotation获取出来的是四元素的值。
假设需要获取在transform面板上的旋转值,需要获取其欧拉角transform.eulerAngles。
4.判断三维向量是否为空
方法1:TestVector3.magnitude == 0
方法2:TestVector3 == Vector3.zero
5.计算反射向量,vector3有自带方法。
Debug.Log(Vector3.Reflect(new Vector3(1.0f,0.0f,1.0f),new
Vector3(0.0f,0.0f,1.0f)));
C# 不支持动态数组,用 ArrayList 可以实现动态数组的功能。
UNITY引擎中,外部类不能直接调用Editor里面的类,但是Editor里面的可以直接调用外部类。
collider.transform,gameobject.transform,componnet.transform都是它们绑定之上的gameobject的transform
Vector3.one其实就是标准向量(1.0f,1.0f,1.0f)
有时候发现子物体乱飞,不受坐标控制。那么很有可能是因为其父节点的相对坐标问题。
application.datapath在编译后的模式也是可以用。
12.构造以某向量为轴的旋转某角度的旋转向量。UNITY自带有四元素旋转矩阵方法。
// Sets the transforms rotation to rotate 30 degrees around
the y-axis
vecRotation = Quaternion.AngleAxis(30, Vector3.up);
vecAim = vecOrgin * vecR
13.关于3DMAX的单个模型小块全部在UNITY3D里面都被转-90度的问题
因为3DMAX傻逼用右手坐标系……
.FBX都会这样,导出.3DS就没什么问题。
主要是怕程序出错,很容易出错。
17.关于UNITY3D自带的ASSET SERVER
这玩意虽然简单易用,一旦操作失当(很容易失当)。当场景资源多的时候,有时候会直接替换资源。UNITY3D是会将这两个玩意辨认为不同的同名文件。会改掉本地或服务器相应目录的名字。多几次之后你就会傻眼了。
所以如果可以还是用SVN或者其他专业点的版本管理器好。
18.关于DontDestroyOnload
DontDestroyOnload的物体要保证它不被加载第二次,不然再进入这个场景就会再多一个。
所以最好能动态生成,在生成之前检验一下它是否存在。若不存在,再添加这个物体。
19.关于粒子的淡入和淡出
如下面两个图,在粒子系统的面板中,有COLOR OVER LEFTTME,里面可以拉多个透明度的点。
20.项目备份要及时
UNITY3D有时会犯一些你压根不知道怎么出来的编译BUG,重新拉个项目就会正常。
21.不同机器上,游戏的操作感觉不一样。
一般不同机器它的帧数是不一样的,假设UPDATE里面加了移动但没有加入时间参数,则会造成帧数不一样它的运动情况则不一样。若有的加了,有的没加,那么呵呵,效果更加糟糕。所以相关计算要加入时间参数。
25.Tiling和Offset
每张材质图片都具有的属性。
Tiling 指的是取当前图片的大小(vector2 0~1 比例的值)
Offset 指的是当前图片UV的值(vector2 0~1 比例的值)
相对应的代码为
renderer.material.mainTextureScale = new Vector2(x,y);
renderer.material.mainTextureOffset = new Vector2(x,y);
26.读取TXT问题
可能很多人没有了解过,其实U3D是可以直接读取TXT的。
查询一下TextAsset就知道了。
27.播放动画的帧实现方式
AnimationState.time是动画的播放时间,可以控制这个时间来实现类似帧的播放方式。
28.U3D的例子系统的RENDERER部分有BILLBOARD,有很多种朝向可以选择。
例如要做个一直面向天空或地面的粒子,摄像机只需要往上看和往下看的效果的话,是很好用的。
不要忘了LateUpdate()这个函数,这个函数在Update后调用,一般来说像跟踪摄像机的位置变化要写在所有变换之后。用于很好的安排顺序。
如果你的项目包涵单机和网络两个部分。
请务必将单机和网络部分分开脚本。不要在脚本里不断做不需要的重复的判断。而且各种联动烦死你。由于开发会进行不断地修改,最好先将单机部分逻辑实现。然后拷贝一份来实现网络部分。假设之后要修改的时候,每次单机和网络都要同步修改。
ScreenToWorldPoint的参数vector3(屏幕坐标X,屏幕坐标Y,距离摄像机的世界距离)
(NGUI)如果特效人员要在UI上做粒子特效,最好是在已有UI上做,不然搬运是个麻烦的过程。
当您的动画播放出现褶皱、破损、奇葩的时候,估计是点受骨骼影响太多了,U3D设置中一个点最多只能受4个骨骼影响。
角色模型经常换的情况,需要整理一套很好的方案来适应。不能每次都改绑点和引用,太浪费时间。程序就该做程序做的事情,不要把时间浪费在拖拉资源拖拉引用上。
模型莫名期末有很多particle
view*物体。(转)
在3DMAX中当你按下6时候,会弹出particle view窗口。同时会生成一个多余的particle view物体(这个物体在大纲中是找不到的,但当使用Ctrl+A的时候,他就会被选到,而且这个物体会占用一定的文件空间),在导出时particle view会严重扰乱物体的轴心。
决方法很简单,只要在max导出之前,按下f11键,进入max的脚本编辑器,输入delete $'particle
view*',回车,此时下一行会提示有几个particle
view被删除了。看到这个数字即可以放心导出了。&
尽量用四元数旋转,因为欧拉角会有死锁现象。
因为hashtable具有装箱和拆箱的操作,所以dictionary的效率要优于hashtable。
ArrayList在数量少的时候效率跟List&&差不多,多的时候(几万以上)要比List慢不少。
SkyBox的使用方式:
import进skybox的官方内置package,然后在摄像机上加Component/Rendenrer/SkyBox的脚本。
在面板中将skybox的材质拖到脚本的public材质对象就好了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。延迟函数?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:55,917贴子:
延迟函数?收藏
请问u3d的延迟函数是什么?就像c语言中的sleep();可以在updata中使用吗?具体使用方法是怎样的?
火星时代unity3d,争当游戏大触,月薪过万小意思,手绘技能,概念设计,商业应用一步到位,你与u3d游戏特效设计师只差一步,赶快点击吧!
额,还有我在网上看到这个函数:Fixed Update();但是我运行的时候报错误:Assets/Script/guanwuyidong.cs(15,9): error CS0246: The type or namespace name `Fixed' could not be found. Are you missing a using directive or an assembly reference?这是怎么回事?
FixedUpdate () 木有空格Update是画面帧,使用延迟会导致卡顿。请使用协程或者Time计时器。
using UnityEusing System.Cpublic class example : MonoBehaviour {public IEnumerator Awake() {print(Time.time);yield return new WaitForSeconds(5);print(Time.time);}}WaitForSeconds就是等待10秒用的函数,还可以自己做一个简单的计时器
void UpDate(){ StartCoroutine(Test());}public IEnumerator Test(){
yield return new WaitForSeconds(5);//等待5秒...}使用协程,这样就可以在update里面等待了。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或ios 热更新下载文件的时候报这个错 有人知道什么回事码?\on log: Asset update erro
大金毛&U3D ios&热更新下载文件的时候报这个错&有人知道什么回事码?\on&log:&Asset&update&error:&src/components/followEntityId.jsc,&The&file&“CFNetworkDownload_S3vwmk.tmp”&doesn’t&exist.&Layer⒐蕶逅の眼涙&/星期二&14:55:53@Alpha狗&@灰狗&渔火你&ios&打包&是怎么打的??大金毛xcode啊渔火是&achieve&吗&??大金毛你要干啥不上appstort?渔火加密&的话&&不能按&那个方式&打大金毛是achieve你怎么加密?代码资源&还是什么?渔火ios&&是&命令行&&打包&的&大金毛cocos&compil&-p&ios&&这样?渔火cocos&compile&-p&ios&-m&release&--sign-identity&“aaaaaa”aaaaaa&&为&证书签名,名称大金毛还真没用过这个命令打包ios&我ios都是用xcode弄的渔火那个要&加上&打包的&证书&渔火xcode&打包&出来的&还是&js&&不是jsc的大金毛自己把js弄成jsc啊&cocos&jscompile有单独的命令渔火xcode&不会&删除&js&的&引用,&你打&jscompile时&,&一开始是jsc,&但马上会变成&js&的大金毛你还没弄明白啊渔火cocos&compile&-p&ios&-m&release&--sign-identity&“aaaaaa”aaaaaa&&为&证书签名,名称大金毛我这边都是手动吧js弄错jsc的&然后用xcode出的包渔火你&按这个打&就行了大金毛xcode&的工程了引用的文件是&jscompile&的输出目录&不是原来js的那个目录这个要自己改一下那按你这样说sdk都没法接了啊渔火怎么会了&,&命令行&是直接出api&的&包的&,&他的代码都是jsc&的大金毛看你描述明显是你xcode&的工程最后拷贝的那个资源路径没改成&jsc的路径渔火不需要自己手动转jsc大金毛这个要收到改的我知道是自动-m&release&就会自动加密渔火我把&那个官方&文档找给你吧大金毛xcode工程里&蓝色的文件夹是会直接复制进ipa里的你知道把你是在回答我刚刚的那么问题?渔火你打包方式的问题大金毛渔火一开始我也才坑了大金毛我直接在模拟器运行也是这样啊这个是热更新的问题&难道要吧jsc改成js?渔火你就用&原来的&js&代码打&就行了他&那个命令&自己会加密大金毛你还是没理解我的问题啊&不更新的时候我这app啥问题都没有&好吧不管我的代码是js还是jsc&都没任何问题渔火你按那个方式&打&就对了,&我也是热更的时候&发现的大金毛&那我接的sdk呢渔火不是一样&吗??,&大金毛我试试先&&那个证书怎么弄?渔火keystore&里面找到对应的证书花子&&&&&&&&招一名cocos2dx开发,1年经验以上;&&公司规模一百多人,手游RPG新项目组,有成功项目;&&包早中晚三餐,项目奖金,五险一金,水果,旅游等福利齐全;&&公司地址:广州万胜围琶洲新村;&&&有意请加QQ&,此Q已满,或者直接发简历到此Q邮箱大金毛目录结构不同&各种报错渔火报错了话&只能自己解决,&我那个&热更&就是那样打包的&大金毛一定要真机才行?渔火我是真机测的&,&我不用模拟器的大金毛不行&&&工程直接报错我sdk用的pods加的&他这个命令都没去读相关的文件唉&蛋疼&更新zip包就没问题&&更新单独的就不行渔火cocos&&不是&有&js&掉&oc&接口吗&大金毛是有啊大金毛Asset&update&error:&src/pool/BulletSprite.jsc,&The&operation&couldn’t&be&completed.&(Cocoa&error&4.)&&有变成这个了&....
现在什么问题啊;tm的&竟然是我自己弄的zip包有问题&&艹\;
我记得我当初下的时候老师还给发了一个东西~让我们破解什么来着但当初都拽的老师的安装包~;干嘛还用4.6啊;
可以&&都是跳转页面的形式&;为什么我异步访问不能下载?看请求居然把源码输出了&还是乱码是导出excel
但是IOS确实在安全性,稳定性,细节处理,应用质量上比安卓强要实事求是;安卓的问题是时间久了手机会卡顿;
------分隔线----------------------------
赞助商链接
赞助商链接Unity新闻(67)
Unity技术文章(178)
Unity3D教程(84)
UDK教学(21)
Unity3D教学(102)
MonoBehaviour.Update 更新
当MonoBehaviour启用时,其Update在每一帧被调用。
MonoBehaviour.FixedUpdate 固定更新
当MonoBehaviour启用时,其 FixedUpdate 在每一帧被调用。
处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)
MonoBehaviour.LateUpdate 晚于更新
当Behaviour启用时,其LateUpdate在每一帧被调用。
LateUpdate是在所有Update函数调用后被调用。这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。
Update和FixedUpdate的区别:
update跟当前平台的帧数有关,而FixedUpdate是真实时间,所以处理物理逻辑的时候要把代码放在FixedUpdate而不是Update.
Update是在每次渲染新的一帧的时候才会调用,也就是说,这个函数的更新频率和设备的性能有关以及被渲染的物体(可以认为是三角形的数量)。在性能好的机器上可能fps 30,差的可能小些。这会导致同一个游戏在不同的机器上效果不一致,有的快有的慢。因为Update的执行间隔不一样了。
而FixedUpdate,是在固定的时间间隔执行,不受游戏帧率的影响。有点想Tick。所以处理Rigidbody的时候最好用FixedUpdate。
PS:FixedUpdate的时间间隔可以在项目设置中更改,Edit-&Project Setting-&time&&找到Fixed timestep。就可以修改了。
Update和LateUpdate的区别
在圣典里LateUpdate被解释成一句话:LateUpdate是在所有Update函数调用后被调用。这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。这句我看了云里雾里的,后来看了别人的解释才明白过来。
LateUpdate是晚于所有Update执行的。例如:游戏中有2个脚步,脚步1含有Update和LateUpdate,脚步2含有Update,那么当游戏执行时,每一帧都是把2个脚步中的Update执行完后才执行LateUpdate 。虽然是在同一帧中执行的,但是Update会先执行,LateUpdate会晚执行。
现在假设有2个不同的脚本同时在Update中控制一个物体,那么当其中一个脚本改变物体方位、旋转或者其他参数时,另一个脚步也在改变这些东西,那么这个物体的方位、旋转就会出现一定的反复。如果还有个物体在Update中跟随这个物体移动、旋转的话,那跟随的物体就会出现抖动。 如果是在LateUpdate中跟随的话就会只跟随所有Update执行完后的最后位置、旋转,这样就防止了抖动。
做一个相机跟随主角的功能时,相机的位置调整写在LateUpdate(),老是不明白,看官方的SmoothFollow相机跟随写在Update()中
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:205109次
积分:4578
积分:4578
排名:第4626名
原创:259篇
转载:36篇
评论:50条
(49)(96)(55)(10)(23)(24)(16)(7)(11)(4)博客访问: 5037
博文数量: 3
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 移动开发
欢迎来到、、unity企业培训教育专区,这里有很多、、、、,我们致力于打造业内unity3d培训、学习第一品牌。
在Unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍。
一般会用到Invoke和InvokeRepeating方法。顾名思义,第一个是执行一次,第二个是重复执行。
看下定义:
void Invoke(string methodName, float time);
第一个参数是方法名(注意是字符串形式),并不是更方便的委托。第二个是延时多少秒。只执行一次。
void InvokeRepeating(string methodName, float time, float repeatRate);
InvokeRepeating第二个参数是延时多少秒后开始,第三个参数是每次执行间隔的秒数。
你有没有发现这两个方法有个弊端,就是必须输入方法名!也就是我说,如果我想延时执行某段代码,必须把代码放在某个方法里,然后使用这Invoke或者InvokeRepeating方法来执行。
这样对于上下文变量、属性的引用就会尤为不便,而且不能传参数!!!尼玛,要他还有何用?
我猜你一定用过这样的方法。没错,“协同”,听起来还挺高大上的名字啊。
用StartCoroutine来执行一个以IEnumerator为返回值的方法,通常用于异步下载啊,等比较耗时又不能让游戏卡死的情况。
还有一个好的类WaitForSeconds,对,它就一个构造函数,用来延时的(延时………………比万艾可好用?比希爱力好用?)。
好了不废话了,以下是我自用的延时方法,放在一个类里以静态方法存在。可以在任何时候任何地方延时指定秒数的代码。
using UnityE
using System.C
public class DelayToInvoke : MonoBehaviour
public static IEnumerator DelayToInvokeDo(Action action, float delaySeconds)
yield return new WaitForSeconds(delaySeconds);
如何使用呢?
比如我点击NGUI的一个Button,则
void OnClick()
StartCoroutine(DelayToInvoke.DelayToInvokeDo(() =>
Application.LoadLevel(“Option”);
}, 0.1f));
Application.LoadLevel(“Option”);就是想要延时执行的代码段。
你可以写很长很长。Action,随便搞。
更多精彩请点击&
阅读(1002) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 u3d update 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信