我在因特網上發現了我的問題的代碼,但我需要它在C#中,而不是UnityScript中。我試過但我不知道如何解決一些問題。我翻譯了幾乎一切。需要將一些UnityScript轉換爲C#
原文:
#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並沒有在最後一行的錯誤「對象不對'變換'作出任何含義定義
還要記住一件事 - 你的腳本文件名必須與類相同。在這種情況下,它應該是ResourceGenerator.cs –