RaycastNonAlloc在Unity中分配40B的内存

时间:2016-06-02 23:13:55

标签: c# unity3d

我一直在努力解决这个问题,我无法找出问题所在。

这是一张图片: enter image description here

这里是一个指向unitypackage的链接:https://www.dropbox.com/s/0vm67njz5unn8w2/RaycastNonalloc.rar?dl=0

我已经在两台不同的计算机上测试了这个项目,并且在第一台RaycastNonAlloc上都分配了40B的内存。我测试过的第二台计算机从未安装过Unity,我只是导入了程序包并运行程序而没有触及任何设置。在互联网上试过这个的人在运行它时没有得到任何分配的内存。如果有人可以帮我解决这个问题,我会很高兴我不知道我会做什么。

using System.Collections;
using UnityEngine;

public class Test : MonoBehaviour
{
    private Ray ray;
    public Transform targetTransform, targetTransform2,
        myTransform;
    public int numberOfRaycastHits;
    private RaycastHit[] raycastHits;
    private bool useOther;
    private float tempFloat;


    void Start()
    {
        raycastHits = new RaycastHit[10];
        myTransform = transform;
    }


    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            useOther = !useOther;
            /*Material mat = new Material(Shader.Find("Diffuse"));
            Destroy(mat);*/
            //Debug.Log(numberOfRaycastHits);
            PerformRaycast();
        }
    }


    private void PerformRaycast()
    {
        if (useOther)
        {
            ray.origin = myTransform.position;
            ray.direction = targetTransform2.position - myTransform.position;
            numberOfRaycastHits = Physics.RaycastNonAlloc(ray, raycastHits, 10);
        }
        else
        {
            ray.origin = myTransform.position;
            ray.direction = targetTransform.position - myTransform.position;
            numberOfRaycastHits = Physics.RaycastNonAlloc(ray, raycastHits, 10);
        }
    }
}

感谢您的阅读。

1 个答案:

答案 0 :(得分:1)

Unity回答我的回答是这是一个错误。谢谢你的帮助。