将js转换为C#

时间:2016-08-17 20:50:52

标签: javascript c# unity3d

需要协助将JS转换为C#。

原始剧本:

var target : GameObject;
var fadeDuration : float = 3.0;


function Update(){

    if (target.GetComponent.<Renderer>().material.color.a > 0)
    target.GetComponent.<Renderer>().material.color.a -= Time.deltaTime/fadeDuration;
}

翻译的C#脚本:

using UnityEngine;
using System.Collections;

public class FadeOutDeadBody : MonoBehaviour {
GameObject target;
float fadeDuration = 3.0f;
void Update (){

    if (target.GetComponent.<Renderer>().material.color.a > 0)
    target.GetComponent.<Renderer>().material.color.a -= Time.deltaTime/fadeDuration;
}

}

我收到来自Unity3d的错误说:

  

folder / FadeOutDeadBody.cs(9,29):错误CS1525:意外的符号<', expecting标识符&#39;

任何想法如何解决这个问题?

5 个答案:

答案 0 :(得分:6)

只需删除GetComponent.<Renderer>中的点 =&GT; GetComponent<Renderer>

答案 1 :(得分:5)

每个人都把这个留下了,所以我决定发帖。

您无法直接修改color的字母。您必须创建新的color,修改Alpha,然后将其分配回Material颜色。也删除点。这应该是它的样子:

public class FadeOutDeadBody : MonoBehaviour
{
    public GameObject target;
    float fadeDuration = 3.0f;

    Renderer renderer;

    void Start()
    {
        renderer = target.GetComponent<Renderer>();
    }

    void Update()
    {

        if (renderer.material.color.a > 0)
        {
            Color color = renderer.material.color;
            color.a -= Time.deltaTime / fadeDuration;
            renderer.material.color = color;
        }
    }
}

答案 2 :(得分:3)

GetComponent.<Renderer>() - &gt; GetComponent<Renderer>() 你有额外的'。'在那里抛弃了编译器。

编辑以回复您对romain-aga答案的评论

你需要扩展它看起来像这样(C#的工作方式与JS有点不同,所以你不能那么灵活)

Renderer r = target.GetComponent<Renderer>();
Color c = r.material.color;
c.a -= Time.deltaTime/fadeDuration;
r.material.color = c;

C#中的r,g,b和颜色属性是只读的,因此您必须修改整个颜色值。

注意:我现在的计算机上没有Unity,所以这是未经测试的。我们会看到我的记忆今天有多好。

答案 3 :(得分:2)

而不是这个

target.GetComponent.<Renderer>()

你可能需要这个

target.GetComponentInParent<Renderer>()

或者

target.GetComponent(typeof(Renderer))

答案 4 :(得分:2)

在&#34;翻译&#34;时要小心代码从一种语言到另一种语言,因为约定是特定于语言的。查看统一文档,调用GetComponent的正确方法是通用的,因此您只需删除调用GetComponent的代码中的句点即可解决此特定问题。

一般情况下,由于C#与JavaScript非常不同,您可能会遇到更多类似的问题,所以请注意这一点。

参考:GetComponent documentation