gameObject.transform.FindChild(“Name”).gameObject
真希望能找到一个更合适的方式。不过这样暂时也能解决问题了。
gameObject.transform.FindChild(“Name”).gameObject
真希望能找到一个更合适的方式。不过这样暂时也能解决问题了。
点击“我的电脑”–>右键“属性”–>“高级系统设置”–>“高级”选项页中的“性能”设置->“数据执行保护”–>开启“为除下列选定程序之外的所有程序和服务启用DEP–>将unity.exe加入。
然后会提示重启电脑,重启后unity卡的问题即解决。
不知道是哪个地方不兼容。
在我的x64 win7上,unity3d在脚本有改动时卡的要命,基本上需要几十秒后才会响应。
不得已,尝试在mac上看看有没有这种问题。
如果 还有这种问题,我是无解了。
今天下载unity3d for mac.
Debug.Log(“hello”);
用来输出日志。
建立至server的连接
using UnityEngine;
using System.Collections;
using Sfs2X;
using Sfs2X.Logging;
using Sfs2X.Core;
using Sfs2X.Entities;
using Sfs2X.Requests;
public class NewBehaviourScript : MonoBehaviour {
SmartFox sf;
void Start () {
sf = new SmartFox(true);
sf.Debug = true;
Debug.Log(“hello”);
sf.AddEventListener(SFSEvent.CONNECTION, OnConnection);
sf.Connect(“127.0.0.1”,9933);
}
void FixedUpdate()
{
sf.ProcessEvents();// 这里用来处理事件,必不可少
}
// Update is called once per frame
public void OnConnection(BaseEvent evt)
{
Debug.Log(“in onConnection”);
}
}
awake与start的共同点是都只会被调用一次。
awake调用在start之前,所有game object初始化完成后,调用awake,调用顺序是随机的。
所以awake的作用是设置game object之间的关联。
1、unity3d中,变量应该使用静态类型,避免使用动态类型,这一点可以提供20倍的效率。
2、为了避免开发人员一不小心使用动态类型,unity3d中提供#pragma strict,用来强制使用静态类型,当使用动态类型时会提供编译错误。
3、缓存已经查找的组件:
例:下面一段代码很普通。
function Update () {
transform.Translate(0, 0, 5);
}
实际上修改一下,可以更高效:
private var myTransform : Transform;
function Awake () {
myTransform = transform;
}
function Update () {
myTransform.Translate(0, 0, 5);
}
这种改动,能压榨出最后一点性能。但这种改动,有时候并不能取到非常明显的效果。这种优化可取也可不取。
4、使用固定长度的数组。
unity3d中arrayList及array拥有可变长度特性,这种特性在游戏中并不是很合适。
unity3d中推荐使用固定长度集合,在开发中基本可以推算出所需要的最大长度。指定长度后,遍历的速度基本是线性的。
5、避免执行不必要的操作。
简单来说,就是如果一个对象,已经不在可视范围之内,附加在该对象上的代码完成没有必要执行。
unity3d提供了3种方式
1)使用OnBecomeVisible()及OnBecomeUnvisible()
function OnBecameVisible () {
enabled = true;
}
function OnBecameInvisible () {
enabled = false;
}
这种方式的缺点是,在某些情况,当对象从屏幕上不可见之后,依旧希望AI继续执行。
2) 使用OnTriggerEnter() 及OnTriggerExit()
function OnTriggerEnter (c : Collider) {
if (c.CompareTag(“Player”))
enabled = true;
}
function OnTriggerExit (c : Collider) {
if (c.CompareTag(“Player”))
enabled = false;
}
这种方式就比较合适一些,当玩家靠近时,才开始进行计算,当玩家远离后,就不会再被执行。
3) 这种就简单了,使用 yield 每次暂停5秒。
Time.deltaTime是上一次frame完成需要的时间。
也即每次调用时间隔的时间。因为每frame都会被调用一次。
导入后的文件没有对应的材质。
在网上搜索了一下资料,看到普遍提供的解决方案是在unity3d中自己手动再设置一遍材质。
1、在http://fancybox.net/下载最新版
懒人直接点击下载连接:
http://fancybox.googlecode.com/files/jquery.fancybox-1.3.4.zip
2、下载下来的fancybox目录放在自己网站的根目录下。
在html中添加:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> <script type="text/javascript" src="/fancybox/jquery.fancybox-1.3.4.pack.js"></script> 还有fancybox的CSS文件:
<link rel="stylesheet" href="/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />3、写一个测试页来测试一下效果:
<a href="http://www.zhukunqian.com/image/855788_20110410143732140.jpg"> <img src="http://www.zhukunqian.com/image/855788_20110410143732140.jpg" /> </a> 然后在html的body前添加: <script type="text/javascript"> $(function() { $('a.single_image').fancybox(); }); </script> OK,现在可以看到效果了。4、如果遇到错误:
$ is not defined 这是因为jquery.min.js
文件没有正常加入。 d.onCleanup is not a function 这是因为没有将fancy的css文件加入。
近期评论