c# - 需要将一些 UnityScript 转换为 C#

标签 c# unity-game-engine unityscript

我在互联网上找到了解决我的问题的代码,但我需要 C# 代码,而不是 UnityScript。我尝试过,但我不知道如何解决一些问题。我几乎翻译了所有内容。

原文:

#pragma strict

var prefab : GameObject;

function Start () {
    spawn();
}

function Update () {

}

function GetPointOnMesh() : RaycastHit {
    var length : float = 100.0;
    var direction : Vector3 = Random.onUnitSphere;
    var ray : Ray = Ray(transform.position + direction*length,-direction);
    var hit : RaycastHit;
    GetComponent.<Collider>().Raycast (ray, hit, length*2);
    return hit;
}
    function spawn() {
        var randomPoint = GetPointOnMesh();
        var spawnPreferences = Instantiate(prefab, randomPoint.point, Quaternion.identity);
        spawnPreferences.transform.eulerAngles.y = Random.Range(0, 360);
    }

半翻译为 C#:

using UnityEngine;
using System.Collections;

public class ResourceGenerator : MonoBehaviour
{

    GameObject prefab;

    void Start()
    {
        spawn();
    }

    RaycastHit GetPointOnMesh()
    {
        float length = 100.0f;
        Vector3 direction = Random.onUnitSphere;
        Ray ray = new Ray(transform.position + direction * length, -direction);
        RaycastHit hit;
        GetComponent<Collider>().Raycast(ray, out hit, length * 2);
        return hit;
    }

    void spawn()
    {
        var randomPoint = GetPointOnMesh();
        var spawnPreferences = Instantiate(prefab, randomPoint.point, Quaternion.identity);
        spawnPreferences.transform.eulerAngles.y = Random.Range(0, 360);
    }

}

我不知道需要什么变量类型来代替 var,并且最后一行有一个错误“对象不包含“transform”的定义。

最佳答案

你尝试过吗?

void spawn()
    {
        RaycastHit randomPoint = GetPointOnMesh();
        GameObject spawnPreferences= (GameObject)Instantiate(prefab, randomPoint.point, Quaternion.identity);
        spawnPreferences.transform.eulerAngles = new Vector3(0,Random.Range(0, 360),0);
    }

关于c# - 需要将一些 UnityScript 转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32796144/

相关文章:

c# - 如何存储倒数第二个值以与新值进行比较

unity-game-engine - Unity 2019.1.0f2 : Blender could not convert the . 混合文件转FBX文件

c# - 使用 Entity Framework 调用存储过程并从 WCF 安全返回的更好方法?

c# - SendMailAsync 导致 TaskCanceledException 的原因?

c# - 从游戏对象 UNITY C# 创建网格

c# - Unity 5.4 求物体长度

c# - Raycast - 从 C# 转换为 UnityScript

3d - 将 Unity 转换转换为 THREE.js 旋转

c# - 将字符串转换为泛型

c# - Linq to SQL 的具体排序