小编I.B*_*I.B的帖子

每三次迭代C#

我有这个循环,每次我的变量是3的倍数时,对我执行一个简单的任务,目前我必须创建一个大循环,其中包含3的每个倍数与逻辑OR(3,6,9,... ).我想知道是否有更有效的方法来做到这一点.

这是我的代码片段:

if (waveCounter == 3 || waveCounter == 6 || waveCounter == 9 || waveCounter == 12)
{
    amount = 0.03f;
    dayNight.lightAmout = amount;
    dayNight.light.intensity = Mathf.Lerp(dayNight.light.intensity, dayNight.lightAmout, fadeTime * Time.deltaTime);
}
else
{
   amount = 1f;
   dayNight.lightAmout = amount;
   dayNight.light.intensity = Mathf.Lerp(dayNight.light.intensity, dayNight.lightAmout, fadeTime * Time.deltaTime);
}
Run Code Online (Sandbox Code Playgroud)

我的目标是摆脱在if语句中写出3的倍数,并且每当我的waveCounter变量是3的下一个倍数时仍然实现相同的目标.

c# loops

4
推荐指数
3
解决办法
4569
查看次数

如何在 Unity 中更改场景

    if(Vector3.Distance(transform.position,Player.position) <= MaxDist)
    {
        //Call What Happens Here
    }
Run Code Online (Sandbox Code Playgroud)

我想用一些将播放器发送到主菜单(场景 0)的代码替换注释。顺便说一下,这是 JavaScript,我使用的是 Unity 5.6。完整代码如下。

    #pragma strict

    var Player : Transform;
    var MoveSpeed = 4;
    var MinDist = 3;
    var MaxDist = 20;

    function Start()
    {

    }

    function Update ()
    {
        transform.LookAt (Player);
        if(Vector3.Distance(transform.position,Player.position) >= MinDist)
        {
            transform.position += transform.forward * MoveSpeed*Time.deltaTime;

            if(Vector3.Distance(transform.position,Player.position) <= MaxDist)
            {
                //Call What Happens Here
            }
        }
    }    
Run Code Online (Sandbox Code Playgroud)

unity-game-engine unityscript unity5

3
推荐指数
1
解决办法
2万
查看次数

尝试运行协同程序时,我不断收到错误

我是C#和编程的新手,我无法让协程工作,我以前使用过基本版并且没有麻烦,我现在正试图做一些非常相似但没有任何成功的东西.

统一的错误信息:

参数#1' cannot convert方法组'表达式输入`System.Collections.IEnumerator'

"UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)"的最佳重载方法匹配有一些无效的参数

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class Fire : MonoBehaviour
{
public Transform firePos;
public GameObject bullet;
public bool fireCheck;
public float spawnTime;

IEnumerator FireRate()
{
    while(fireCheck == true)
    {
        yield return new WaitForSeconds(spawnTime);
        Instantiate(bullet, firePos.position, firePos.rotation);
    }
}

void Start()
{
    spawnTime = 4f;
    StartCoroutine(FireRate)();
}

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        fireCheck = true;
    }

}  
}
Run Code Online (Sandbox Code Playgroud)

我将继续研究并更好地理解这一点,但我无法弄清楚这一点,我将不胜感激

c# unity-game-engine

-3
推荐指数
1
解决办法
396
查看次数

标签 统计

c# ×2

unity-game-engine ×2

loops ×1

unity5 ×1

unityscript ×1