我从使用Unity3d的游戏开发开始,我可以看到有3种支持的语言用于创建脚本:C#,unityscript和Boo ......
虽然,从网页设计过去我显然使用javascript,但经过几次尝试后,我注意到Unity3d并没有完全支持脚本语言和一些元素new Date().valueOf(),如属性arguments和方法中的一些其他语句,如属性和许多其他人将无法正常工作,似乎我的文件不能有一个包装方法,包含所有其他方法,如:
(function (scope) {
function Start() {
...
}
...
}(this));
Run Code Online (Sandbox Code Playgroud)
当使用new Date().valueOf()JS中有效的东西时,我得到:
MissingMethodException:找不到方法:'System.DateTime.valueOf'.Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher()
那么编译器可能会将最初的"unityscript"代码转换为Boo语言?所以也许Boo是正确的"原生"选择,也许unityscript本身不是开发unity3d应用程序时的最佳方式?
我正在考虑一种语言,它完全支持所有已知的本机类和方法,它们可以正常工作吗?
很抱歉上面提到的任何错误,请告诉我您的想法.
有人可以解释Javascript之间的区别:
var x = something
Run Code Online (Sandbox Code Playgroud)
和
var x : something
Run Code Online (Sandbox Code Playgroud)
我不知道在哪里/如何搜索它.
我在本文档第4页底部看到了上面的代码:http://download.unity3d.com/support/Tutorials/2%20-%20Scripting%20Tutorial.pdf
提前致谢!
我只是有一个基本问题.我正在尝试学习如何使用unityscript的函数,并且当我使用类似的东西创建函数时我学会了
function Example(text)
{
print(text);
}
Run Code Online (Sandbox Code Playgroud)
然后使用它来调用它
Example();
Run Code Online (Sandbox Code Playgroud)
您实际上可以在括号中的后一段代码的括号中插入一个字符串或数字,它将通过并将其自身插入您之前创建的函数中.在这种情况下,它最终打印出我在括号中键入的内容.
现在,我的问题是,如果有效,那么为什么不通过我传递两个数字并要求让它们添加工作?我试图使用的代码如下:
Addition(4, 4);
function Addition(a, b)
{
print(a+b);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试执行此操作时,Unity告诉我
运算符"+"不能与"对象"类型的左侧和"对象"类型的右侧一起使用.
我在看这个视频在9分钟的Javascript功能,并在视频中,正是那家伙的类型,并获取脚本添加给他.我对脚本编程比较陌生,而且我对我可能做错了什么并不太了解.在此先感谢您的帮助.
在一段时间后如何使对象不可见(或只是删除)?使用NGUI。
我的示例(用于更改):
public class scriptFlashingPressStart : MonoBehaviour
{
public GameObject off_Logo;
public float dead_logo = 1.5f;
void OffLogo()
{
off_Logo.SetActive(false);
}
//function onclick button
//remove item after a certain time after pressing ???
void press_start()
{
InvokeRepeating("OffLogo", dead_logo , ...);
}
}
Run Code Online (Sandbox Code Playgroud) 如何增加/减少Unity中对象的大小?
例:
public GameObject精灵;
公共浮动比例= 2.0f;
void ScaleResolution()
{
sprite = sprite*scale; //史诗串!
}
我想在我的屏幕中随机生成气泡.当气泡在一个地方产生时,其他气泡不能在其半径1区域附近产生.表示气泡不会与任何其他气泡碰撞或触发.
我该怎么做 ?
public void GenerateBubble ()
{
newBubbleXPos = Random.Range (-7, 7);
newBubbleYPos = Random.Range (-3, 3);
bubbleClone = (GameObject)Instantiate (bubblePrefab, new Vector3 (newBubbleXPos, newBubbleYPos, 0), Quaternion.identity);
UIManager.instance.ChangeBubbleSprite (bubbleClone);
bubbleList.Add (bubbleClone);
if (bubblePosList.Contains (bubbleClone.transform.position)) {
bubbleClone.transform.position=new Vector3(Random.Range (-7,7),Random.Range (-3,3),0);
}
bubblePosList.Add (bubbleClone.transform.position);
bubbleClone.transform.parent = UIManager.instance.CurrentLevel.transform;
GLOBALS.bubbleCounter++;
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,每个气泡都生成在不同的位置,但它可以与其他气泡碰撞,我想生成新的气泡不同的位置,也不会碰撞.我的泡泡对手的半径是1.
大多数Unity教程建议在Update函数中使用Mouse事件,如下所示:
function Update () {
if (UnityEngine.Input.GetMouseButton(1)) {
}
}
Run Code Online (Sandbox Code Playgroud)
这让我觉得效率非常低,类似于在AS中使用onEnterFrame或在JS中使用setInterval来为整个应用程序供电 - 我真的更喜欢使用基于事件的系统.
OnMouseDown()方法很有用,但只有在MouseDown位于对象上时才会触发,而不是在场景中的任何位置触发.
所以这里有一个问题:Unity中是否有MouseEvent用于检测鼠标按钮是否全局关闭,还是Update解决方案是推荐的选项?
我希望在一段时间内给我一个问号的权威答案.似乎经常使用术语JavaScript来表示或描述UnityScript.
我一次又一次地被告知你可以使用实际的JavaScript在Unity中开发游戏,但是根据我的理解,UnityScript最多可以被描述为JavaScript的超集,但实际上有些项目可能并不完全兼容并且您不能像通常那样使用JS来开发Unity游戏,因为您必须遵循他们的约定.
我错了吗?您是否可以直接使用纯JS及其约定来使Unity游戏不遵循UnityScript设置的参数?
如何统一进行屏幕录像?我想在跑步游戏中记录屏幕(游戏性)。那应该是play / stop,replay,将录制内容从设备本地保存,从我的设备打开/加载(我们已经录制了)。
在我的游戏中,一台可以捕获本地相机的相机和一台3D模型。
我希望将两者都记录下来,并在需要时使用我的功能。
先感谢您。
在游戏中,我正在创建一个“游戏结束”场景,一旦玩家输掉游戏,该场景就会加载。在游戏过程中,分数由玩家在屏幕上的位置计数,并且随着玩家y轴位置的增加而增加。
我使用以下代码在实际玩游戏的场景上显示分数:
using UnityEngine;
using UnityEngine.UI;
public class PlayerScore : MonoBehaviour
{
public Transform player;
public Text scoreText;
// Update is called once per frame
void Update()
{
scoreText.text = player.position.y.ToString("0");
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用相同的编码在“游戏结束”屏幕上显示玩家的最终分数。我面临的问题是我无法在“游戏结束”场景中识别出该玩家,因为该玩家不是该场景中的物体或精灵。
有没有一种简单的方法可以将玩家从以前的场景归入最终(“游戏结束”)场景,以便我可以用来确定最终得分?
这是我在播放场景中尝试使用“ EndScene”游戏对象的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class EndMenu: MonoBehaviour
{
public Text scoreText;
public Transform player;
public static bool GameEnds = false;
public GameObject endMenuUI;
void OnCollisionEnter2D(Collision2D exampleCol)
{
if(exampleCol.collider.tag == "Obstacle")
{
endMenuUI.SetActive(true);
Time.timeScale = …Run Code Online (Sandbox Code Playgroud) unityscript ×10
c# ×3
boo ×1
events ×1
function ×1
javascript ×1
mouse ×1
mousedown ×1
ngui ×1
syntax ×1