标签: unityscript

如何在Unity3D中获得平滑的慢动作

我试图在正在制作的游戏中获得慢动作,但它看起来确实很滞后。我使用 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 和脚本方面的新手,所以请对我宽容点。

谢谢。

unity-game-engine unityscript

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

使用yield WaitForSeconds

我可能会问一些非常明显的东西而且我忽略了一些东西,但是我试图在它做某事之前创建一个暂停.

我已经看到这在网上很多地方使用 -

yield WaitForSeconds(2);
Run Code Online (Sandbox Code Playgroud)

但是我得到一个语法错误,

"错误CS1528:预期;或=(无法在声明中指定构造函数参数)(CS1528)(Assembly-CSharp)

这让我感到困惑,因为我不确定yield关键字的真正意义或作用是什么,而且我假设它WaitForSeconds是一个类,其中"2"在构造函数中(不在声明中),任何帮助都将受到赞赏.谢谢!

c# unity-game-engine unityscript

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

ApplicationData.persistentDataPath Unity 编辑器到 Android

有谁知道,我必须在 Unity 项目目录结构中放置一个文件(sqlite 文件),以便在 apk 编译和安装后,该文件仍存储在 Android 端的 persistedDataPath 中?

提前致谢!

unity-game-engine unityscript

4
推荐指数
1
解决办法
5515
查看次数

Unity(C#) - > Kotlin < - Coroutines

我是第一次尝试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做类似的事情.有人可以帮我指导正确的方向吗?如果我在发布答案之前弄明白,我会更新我的帖子.

提前致谢!

c# coroutine unity-game-engine kotlin unityscript

4
推荐指数
1
解决办法
1349
查看次数

UnityScript相当于这个C#片段

这在UnityScript中会是什么样子?

void playerDataLoaded( List< GameCenterPlayer > players )
{
    foreach( GameCenterPlayer p in players )
    // do something with p
}
Run Code Online (Sandbox Code Playgroud)

玩家是列表而不是数组.

我正在尝试处理来自Apple GameCenter的事件响应,它返回一个电镀属性列表.这些是错误:

"长度不是对象播放器的成员"

"类型'对象'(播放器)不支持切片"

使用iOS Game Center,Unity和prime31 GameCenter插件.

c# unity-game-engine ios unityscript prime31

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

Unity3d中的多线程脚本调用

我试图在Unity3d中实现多线程脚本执行,但似乎Unity库没有办法提供,我们必须使用Mono提供的System.Threading.但是他们已经提到Unity Scripting不是线程安全的.

我可以使用System.threading或其他独立于平台的API在Unity3D中安全有效地实现多线程吗?另外,我如何确保脚本并行运行?

一个例子或链接将受到高度赞赏.

问候

c# multithreading boo unity-game-engine unityscript

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

从另一个GameObject的脚本设置转换

我正在尝试创建一个脚本来设置实例化时的对象.问题是,我不清楚如何做到这一点.我有这个功能..

function spawnPlayer()
{
    var CameraScript = GameObject.Find(PlayerPrefab.name).GetComponent("Camera Control");
    Network.Instantiate(PlayerPrefab, spawnObject.position, Quaternion.identity, 0);
}
Run Code Online (Sandbox Code Playgroud)

PlayerPrefab将成为将要实例化的预制件.当发生这种情况时,我需要在另一个GameObject上设置实例化的gameObject,这个GameObject是一个名为"Camera Control"的脚本,里面有一个我想要设置的变换Target.这该怎么做?

instantiation unity-game-engine unityscript gameobject

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

获得最接近目标的最有效方法是什么

从这两种方法中获得最接近目标的最有效和最便宜的方法是什么?

使用LINQ

GameObject FindClosestTarget(string trgt) 
{
    GameObject[] closestGameObject = GameObject.FindGameObjectsWithTag(trgt)
                      .OrderBy(go => Vector3.Distance(go.transform.position, transform.position)
                      .FirstOrDefault();
         return closestGameObject ;
}
Run Code Online (Sandbox Code Playgroud)

或这个

 GameObject FindClosestTarget(string trgt) 
     {
         GameObject[] gos= GameObject.FindGameObjectsWithTag(trgt);

         GameObject closest=null;
         float distance = Mathf.Infinity;
         Vector3 position = transform.position;
         foreach (GameObject go in gos) {
             Vector3 diff = go.transform.position - position;
             float curDistance = diff.sqrMagnitude;

             if (curDistance < distance) {
                 closest = go;
                 distance = curDistance;
             }
         }

         return closest;
     }
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine unityscript gameobject

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

从另一个脚本访问变量/函数

所以我试图通过触摸一个立方体来改变另一个脚本中的变量.当前设置

  • 1x球员
  • 1x敌人

每个都有自己的脚本Enemy_Stats&Character_Stats
正如你在这个小片段中看到的那样,从另一个脚本访问变量是一个很好的解决方法.

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.tag == "Enemy")
    {
        collision.gameObject.GetComponent<Enemy_Stats>().Health = 
            collision.gameObject.GetComponent<Enemy_Stats>().Health 
            - gameObject.GetComponent<Character_Stats>().AttackDamage;

        if (collision.gameObject.GetComponent<Enemy_Stats>().Health <= 0)
        {
            Destroy(collision.gameObject);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我刚接触Unity,但是没有办法用它来引用它:
collision.Health

c# unity-game-engine unityscript

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

C# - 我如何拥有2个游戏对象总是具有相同的y值

我目前在我的场景中有一个立方体,我已经四处移动了.我希望另一个立方体始终具有相同的y值.因此,如果第一个立方体向下移动10个单位,我希望另一个立方体做同样的事情.

我的第一个多维数据集是在编辑器中手动创建的,但我的另一个是使用脚本放置的.谢谢!

c# unity-game-engine unityscript

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