2015-09-26 72 views
2

我在因特網上發現了我的問題的代碼,但我需要它在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並沒有在最後一行的錯誤「對象不對'變換'作出任何含義定義

+0

還要記住一件事 - 你的腳本文件名必須與類相同。在這種情況下,它應該是ResourceGenerator.cs –

回答

2

您是否嘗試過?

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); 
    } 
+0

謝謝,幫助球員。它正在工作。現在我可以回到製作遊戲了。 –

+1

@ Haker53535歡迎來到Stack Overflow!如果它幫助你解決你的問題,一定要接受答案 - 這樣你的問題就被標記爲已回答。 – Serlite