小编Pro*_*mer的帖子

计算阴影的大小

我创建了一个Unity3d项目,我在对象后面使用了一些聚光灯来获取它们的阴影.我试图获得一次反映在地板上的阴影的真实尺寸(使用我的比例).有没有办法做到这一点?

c# shadow unity-game-engine

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

碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)

我是品牌新Unity3D 5,我有我的第一个2D游戏,涉及碰撞检测的问题。我的移动物体是一个球,有 Rigidbody2D 和 CircleCollider2D。我的固定“碰撞器或触发器”是一个 BoxCollider 并附有一个脚本。OnTriggerEnter2D 应该在球穿过固定框时触发。我也试过 OnCollisionEnter2D 但我相当肯定我应该使用 OnTriggerEnter2D 因为我的固定框被标记为触发器。

我的代码:

public class LoseCollider : MonoBehaviour {

public LevelManager levelManager;

void OnCollisionEnter2D(Collision2D collision)
{
    print("collide");
    levelManager.LoadLevel("Lose");
}

void OnTriggerEnter2D(Collider2D trigger)
{
    print("trigger");
    levelManager.LoadLevel("Lose");
}

void OnCollisionEnter(Collision collision)
{
    print("collide");
    levelManager.LoadLevel("Lose");
}

void OnTriggerEnter(Collider trigger)
{
    print("trigger");
    levelManager.LoadLevel("Lose");
}
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在测试所有变体,但没有调用任何变体。这是我的对象的 Unity 属性:

球

在此处输入图片说明

我确定我错过了一些简单的东西,如果有人可以请向我指出。

c# 2d collision-detection unity-game-engine unity5

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

从 url 加载和显示图像

我正在尝试将图像从 url 加载到 GameObject。

我找到了下一个教程:

https://www.youtube.com/watch?v=8UK2EsKBzv8

下载成功,但是看不到图片。

我究竟做错了什么?

// Use this for initialization
void Start () {
    StartCoroutine(loadSpriteImageFromUrl("https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/408px-Google_2015_logo.svg.png"));
}

IEnumerator loadSpriteImageFromUrl(string URL)
{
    // Check internet connection
    if (Application.internetReachability == NetworkReachability.NotReachable)
    {
        yield return null;
    }

    var www = new WWW(URL);
    Debug.Log("Download image on progress");
    yield return www;

    if (string.IsNullOrEmpty(www.text))
    {
        Debug.Log("Download failed");
    }
    else
    {
        Debug.Log("Download succes");
        Texture2D texture = new Texture2D(1, 1);
        www.LoadImageIntoTexture(texture);                      
        Sprite sprite = Sprite.Create(texture,
            new Rect(0, 0, texture.width, texture.height),      
            Vector2.one / 2);                                     

        GetComponent<SpriteRenderer>().sprite = sprite; …
Run Code Online (Sandbox Code Playgroud)

c# url image unity-game-engine

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

将UI RectTransform移动到世界位置

我有一个名为Player的GameObject 和一个Canvas。该HealthBar游戏对象是画布的孩子(画布> HealthBar) 。在播放器后面有脚本的HP酒吧。它应该跟随玩家在其上方的固定位置,因此它位于精灵顶部附近。这是HP Follow Script的“关注”部分。

        void Update () 
{
    Vector3 currentPos = transform.position;
    Vector3 playerPos = Camera.main.WorldToViewportPoint (Player.transform.position);
    transform.position = playerPos;
Run Code Online (Sandbox Code Playgroud)

问题是HP条随角色移动,但移动速度却很小。例如,如果玩家移动一个单位,则小节移动0.1个单位。

错误视频:https//streamable.com/vaz7h

c# canvas unity-game-engine

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

使用PlayOneShot时如何停止音频

所以目前我有一个8秒长的音频剪辑。但是,我希望能够在发生特定情况时停止播放。像这样:

private AudioSource soundPlayer2D;
private AudioClip sound;  

     void Start(){

     GameObject new2DsoundPlayer = new GameObject ("2DSoundPlayer");
     soundPlayer2D = new2DsoundPlayer.AddComponent<AudioSource> (); 
     new2DsoundPlayer.transform.parent = transform;

     }
     void Update() {

        if(shouldPlayAudio){

        soundPlayer2D.PlayOneShot (sound, fxVolumePercentage * allVolumePercentage);

        } else if(shouldStopAudio){

        //Stop Audio <--

        }
     }
Run Code Online (Sandbox Code Playgroud)

编辑1:注意,我只想停止特定的音频剪辑,而不是音频源

c# audio unity-game-engine

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

安装时将文件从Resources/StreamingAssets复制到Application.persistentDataPath

我有txt包含游戏中地图数据的文件.问题是文件存储在中,Application.persistentDataPath所以我甚至可以从我的Android设备(创建的地图创建者)更改它,那么如何在我的PC上创建包含基本地图的txt文件,并在persistentDataPath安装时将其显示在我的Android设备上应用?

c# android unity-game-engine

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

为什么在非MonoBehaviour序列化类中进行多个构造函数调用?

我已经将一个脚本附加到Unity游戏对象.该脚本包含各种公共属性,包括我自己的一些类.如下面的简化代码所示,其中TestMonoBehaviorClass附加到游戏对象并且TestClass' TestString在检查器中显示.

public class TestMonoBehaviorClass : MonoBehaviour
{
    public TestClass Test;
}

[System.Serializable]
public class TestClass
{
    public string TestString;
    public TestClass ()
    {
        Debug.Log ("TestClass creator called.");
        this.TestString = "Reset String";
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将脚本附加到游戏对象时,我希望调用一次TestClass(编辑:不是从MonoBehavior派生的构造函数)的构造函数.但如果我在Unity编辑器中运行程序然后停止程序,则会调用它四次.如果我将脚本附加到两个游戏对象上,则会七次.至少我多次在控制台中看到Debug.Log的输出.

不过,如果我TestString在编辑器中更改属性的内容,我手动输入的内容不会被覆盖!

为什么构造函数经常调用?何时在Unity的执行顺序中调用(Unity的事件函数执行顺序)?我可以忽略调用,还是必须在构造函数中添加特殊处理?到目前为止,我没有看到任何实际问题或副作用.

编辑:似乎只调用没有参数的构造函数.如果我只有带参数的构造函数,则不调用任何构造函数.

c# constructor execution unity-game-engine inspector

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

如何使用TryParseHtmlString将十六进制转换为Color(RGBA)

如何使用HEX值更改Unity中的按钮颜色?
我尝试了这个,但它不起作用,也许我在这里犯了一个错误:

btn.image.color = ColorUtility.TryParseHtmlString(DADADAFF, out color); 
Run Code Online (Sandbox Code Playgroud)

c# colors unity-game-engine

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

没有GameObject.Find找到Gameobjects的更好方法

使用Unity,我正在开发一款游戏,所有Gameobjects带有某个标签的游戏都会定期消失/重新出现(平均每10秒钟).我GameObject.FindGameObjectsWithTag()用来创建一个Gameobject[]通过我每次枚举对象需要可见/不可见的通过.我不能在Start上调用它一次,因为Gameobjects在播放时会创建新的.我认为Gameobject[]每次创建/销毁某些内容时访问和更改都会更糟.有没有更好的方法来处理这个问题.我知道GameObject.Find方法对性能的影响有多严重......

c# optimization unity-game-engine

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

仅跳跃一次直到角色落地

我刚刚开始使用 Unity,试图制作一个简单的 3D 平台游戏,在实现这一点之前,我需要降低运动速度。当玩家跳跃时我的问题就出现了。当他们跳跃时,他们可以在空中随心所欲地跳跃。我希望它只跳一次。有人可以帮忙吗?

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

public class Playermovement : MonoBehaviour 
{
    public Rigidbody rb;

    void Start ()   
    }

        void Update()
        {
            bool player_jump = Input.GetButtonDown("DefaultJump");
            if (player_jump)
            {
                rb.AddForce(Vector3.up * 365f);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine visual-studio

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