在一段时间后如何使对象不可见(或只是删除)?使用NGUI。
我的示例(用于更改):
public class scriptFlashingPressStart : MonoBehaviour
{
public GameObject off_Logo;
public float dead_logo = 1.5f;
void OffLogo()
{
off_Logo.SetActive(false);
}
//function onclick button
//remove item after a certain time after pressing ???
void press_start()
{
InvokeRepeating("OffLogo", dead_logo , ...);
}
}
Run Code Online (Sandbox Code Playgroud) 大多数Unity教程建议在Update函数中使用Mouse事件,如下所示:
function Update () {
if (UnityEngine.Input.GetMouseButton(1)) {
}
}
Run Code Online (Sandbox Code Playgroud)
这让我觉得效率非常低,类似于在AS中使用onEnterFrame或在JS中使用setInterval来为整个应用程序供电 - 我真的更喜欢使用基于事件的系统.
OnMouseDown()方法很有用,但只有在MouseDown位于对象上时才会触发,而不是在场景中的任何位置触发.
所以这里有一个问题:Unity中是否有MouseEvent用于检测鼠标按钮是否全局关闭,还是Update解决方案是推荐的选项?
我正在使用Unity for iOS设备开发游戏.我已经实现了以下触摸代码:
void Update () {
ApplyForce ();
}
void ApplyForce() {
if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) {
Debug.Log("Touch Occured");
}
}
Run Code Online (Sandbox Code Playgroud)
我把这个脚本拖到我的游戏对象上,这是一个球体.但无论我触摸哪里,都会显示日志消息.我只想在用户触摸对象时检测触摸.
我试图在正在制作的游戏中获得慢动作,但它看起来确实很滞后。我使用 Unity 提供的标准资源中的 FPS 控制器。我将以下脚本附加到它:
function Update ()
{
if (Input.GetKeyDown ("q"))
{
Time.timeScale = 0.5;
}
if (Input.GetKeyDown ("e"))
{
Time.timeScale = 2.0;
}
if (Input.GetKeyDown ("t"))
{
Time.timeScale = 1.0;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个与此类似的问题http://answers.unity3d.com/questions/39279/how-to-get-smooth-slow-motion.html
但对该问题给出的修复不起作用。我尝试向其添加刚体并将插值设置为插值,但它没有执行任何操作。(我从“使用重力”中删除了勾号,因为角色开始飞行)。我是 Unity 和脚本方面的新手,所以请对我宽容点。
谢谢。
我有大约200小精灵(JPG图片)Assets>Textures>Pictures,我也GameObject有<SpriteRenderer>.有没有办法让我GameObject在代码中从该文件夹加载sprite ?就像是Resources.Load<Sprite>("path");
谢谢.
有谁知道,我必须在 Unity 项目目录结构中放置一个文件(sqlite 文件),以便在 apk 编译和安装后,该文件仍存储在 Android 端的 persistedDataPath 中?
提前致谢!
我很快就会开始使用UnityScript在Unity3D中编写脚本(因为我是初学者).如果我有JavaScript经验(我没有),我会发现UnityScript有什么不同吗?如果是这样,这两种脚本语言之间有多大区别?
我正在为我正在进行的项目尝试统一。
我正在尝试从一组坐标中绘制3D多边形。
所以我现在要做的是在两点之间建立一个立方体。我计划将这些点构建为实心形状或只是“墙壁”以形成一个房间。但是,它似乎没有按预期工作。请指教。
drawCube( Vector3(10,0,14),Vector3(70,0,14));
drawCube( Vector3(90,0,14),Vector3(60,87,45));
function drawCube(v1,v2) {
pA = v1;
pB = v2;
var plane : GameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
var between:Vector3 = pB - pA;
var distance:float = between.magnitude;
plane.transform.localScale.x = distance;
plane.transform.localScale.y=10;
plane.transform.position = pA + (between / 2.0);
plane.transform.LookAt(pB);
}
Run Code Online (Sandbox Code Playgroud)
更新:我也尝试过使用网格,但我所得到的只是下面的图像。我究竟做错了什么?
我正在努力实现这样的目标
我需要在Unity中创建一个无限循环而不使用主线程?我看到了一些例子,但它并没有用:
while(true){
var aa;
debug.log("print.");
}
Run Code Online (Sandbox Code Playgroud)
我想添加一些延迟,例如2秒.如果有人知道解决方案请帮助.
我是第一次尝试Kotlin并希望得到一些帮助.
下面的代码是暂停执行当前函数而不休眠执行线程.暂停基于提供的时间量.该函数使用C#语言中的Coroutine支持.(这个支持最近也加入了Kotlin!)
Unity示例
void Start()
{
print("Starting " + Time.time);
StartCoroutine(WaitAndPrint(2.0F));
print("Before WaitAndPrint Finishes " + Time.time);
}
IEnumerator WaitAndPrint(float waitTime)
{
yield return new WaitForSeconds(waitTime);
print("WaitAndPrint " + Time.time);
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何在Kotlin做类似的事情.有人可以帮我指导正确的方向吗?如果我在发布答案之前弄明白,我会更新我的帖子.
提前致谢!