小编r01*_*128的帖子

如何通过脚本查找游戏对象的子对象或附加到子游戏对象的脚本

我知道这是一个有点愚蠢的问题,但是我将如何通过脚本(脚本附加到游戏对象)引用游戏对象的子项(立方体)。(相当于 GetComponent 之类的东西)

c# unity-game-engine

16
推荐指数
1
解决办法
5万
查看次数

不知道如何在Unity3D中使用协同程序

在Unity3D中,这是我的代码:

void ActivateBuff1(){
    gun.equippedGun.msPerShot /= 2;
    gun.equippedGun.shotsLeftInMag += 10;
    StartCoroutine (WaitRage ());
}

void ActivateBuff2(){
    player.speedModifier *= 1.5f;
    StartCoroutine (WaitSpeed ());
}

IEnumerator WaitRage(){
    yield return new WaitForSeconds(powerUpDuration);
    gun.equippedGun.msPerShot *= 2;
}

IEnumerator WaitSpeed(){
    yield return new WaitForSeconds(powerUpDuration);
    player.speedModifier /= 1.5f;
}
Run Code Online (Sandbox Code Playgroud)

每次玩家进入加电状态时,都会调用其中一个ActivateBuff方法.显然,powerUps效果并不会永远持续下去,所以我常常IEnumerators在等待一定秒数后反转原始方法的效果.但是出于某种原因,IEnumerators永远不会调用代码.请帮助...(并请建议另一种编码方式,因为我知道它不是很干净)

c# unity-game-engine

10
推荐指数
1
解决办法
379
查看次数

协程不工作,所有代码立即调用,没有任何收益或等待

我试图调用一个设置一些变量的协同程序,等待几秒钟,然后将它们设置回来.

不幸的是,整个协程都在同时开始,无需等待.在这种情况下,它几乎就像从未调用过该函数一样.

public void Dash(){
    lastDashTime = Time.time + dashWaitDuration;

    motionBlur (); //this call is not working as expected

    animator.SetFloat ("Speed", 0);
    playerRigidBody.MovePosition (playerRigidBody.position + transform.forward * 1.75f);
}


//this is the coroutine
IEnumerator motionBlur(){
    print ("Hello");
    camMotionBlur.jitter = 10;
    camMotionBlur.enabled = true;

    yield return new WaitForSeconds (2);

    camMotionBlur.enabled = false;
    camMotionBlur.jitter = 0.125f;
}
Run Code Online (Sandbox Code Playgroud)

unity-game-engine

-2
推荐指数
1
解决办法
97
查看次数

标签 统计

unity-game-engine ×3

c# ×2