unity3d编写脚本软件_使用vs给unity3d编写脚本 - CSDN
  • 建议新手学习,老手浏览 有一些工具性的脚本,可以节省很多开发时间
  • Unity脚本篇 - 创建和使用脚本

    千次阅读 2019-07-10 12:26:20
    编写一个脚本,并作为组件加载到GameObject上。 using System.Collections; using System.Collections.Generic; using UnityEngine; namespace CreateAndUsingScripts { public class Ma...
    1. 创建一个Scene,并在里面创建一个GameObject。

    2. 编写一个脚本,并作为组件加载到GameObject上。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    namespace CreateAndUsingScripts {
    
        public class MainPlayer : MonoBehaviour {
    
            // Start is called before the first frame update
            private void Start() {
                Debug.Log("I am alive!");
            }
    
            // Update is called once per frame
            private void Update() {
            }
        }
    }
    
    1. 最后的文件结构是这样。

    2. 在控制台上看到log输出。

    参考:https://docs.unity3d.com/Manual/CreatingAndUsingScripts.html

    展开全文
  • Unity3D自带的编辑好用多了,亲身测试过的,有语法提示,关键字高亮等特点
  • Develop脚本编辑器介绍   注意: A、项目运行过程中的修改不会保存 B、脚本只能依附于游戏对象或由其他脚本调用才能运行 C、一个脚本可以放在多个游戏对象上面,是多个实例 D、一个脚本的多个...

    1、  Mono Develop脚本编辑器介绍

     

    注意:

    A、项目运行过程中的修改不会保存

    B、脚本只能依附于游戏对象或由其他脚本调用才能运行

    C、一个脚本可以放在多个游戏对象上面,是多个实例

    D、一个脚本的多个实例和其他脚本之间互不干扰

     

    2、创建、克隆、销毁游戏对象

     

    A//给游戏物体添加名为FoobarScript的脚本

    GameObject.AddComponent ("FoobarScript");

    B//给游戏物体添加刚体

    Rigidbody  rb = GameObject.AddComponent ("Rigidbody");

    C//给游戏物体添加球体碰撞器

    SphereCollider  sc = GameObject.AddComponent ("SphereCollider");

     

    3、常用核心类

     

    A、通过名称来查找:

         GameObject  player = new GameObject("Player");

     GameObject  go=GameObject.Find(Player”);

    B、通过tag标签获取单个游戏对象:

     GameObject  go=GameObject.FindWithTag(Player”);

     GameObject go=GameObject..FindGameObjectWithTag (Player”);

    C、通过游戏标签获取多组游戏对象:

    GameObject[]  go=GameObject.FindGameObjectsWithTag (Player);

    这个操作比较耗时,把此操作放到Start()

     

    4、组件引用函数

    A、如果要访问的组件不属于常用组件,或者访问的是游戏对象上的脚本(脚本属于自定义组件),可以通过组件引用函数来得到组件的引用。

    GetComponent                  得到组件

    GetComponents                得到组件列表(用于有多个同类型组件的时候)

    GetComponentInChildren    得到对象或对象子物体上的组件

    ScriptName other = GameObject.GetComponent<ScriptName>();

    这个操作比较耗时,把此操作放到Start()

     

    5、协同程序(Coroutine 

    A、协同程序,即在主程序运行时同时开启另一段逻辑处理来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。

    B、  Unity3D中,使用MonoBehaviour.StartCoroutine方法即可开启一个协同程序,也就是说该方法必须在MonoBehaviour或继承于MonoBehaviour的类中调用。

    C、 Unity3D中,使用StartCoroutine(string methodName)可以开启一个线程。

     

    请大家关注:http://www.gopedu.com/teacher

    里面有更为广泛的知识!机不可失  失不再来

    展开全文
  • 在《【Unity3D】Helloworld》(点击打开链接)第一次遇见Unity3D在安装的时候,我曾经说,暂时不知道MonoDevelop是什么来的,先装上,虽然装上也没坏,但我现在已经知道这东西是什么,是一个不好用的脚本编辑器。...

    在《【Unity3D】Helloworld》(点击打开链接)第一次遇见Unity3D在安装的时候,我曾经说,暂时不知道MonoDevelop是什么来的,先装上,虽然装上也没坏,但我现在已经知道这东西是什么,是一个不好用的脚本编辑器。习惯了Visual Studio用Ctrl+K Ctrl+F格式化代码的我,Ctrl+J自动补全代码的我,面对如此的编辑器感到极其不适应,更何况本身C#的发源地就是Visual Studio,所以要设置Unity3D默认编辑器了。你使用JavaScript另当别论,或许MonoDevelop是你更好的选择,但C#不用Visual Studio去写,我感觉天理不容啊!!!

    可以这样更改,如图:


    打开unity3d项目,点击菜单“Edit”。在菜单中选择“Preferences...“,就会进入属性设置界面。选择左边的”External Tools“。在右边的“External Script Editor”选择“Visual Studio”。

    这就可以愉快用Visual Studio编辑Unity3D的脚本了。

    展开全文
  • unity3d编写脚本的一些技巧

    千次阅读 2013-10-11 13:52:21
    主要思路是,给每一个脚本设置一个指向这个脚本的某个实例的全局变量,这样你就可以随时访问那个实例,而不必在检查器中一行一行搜索脚本。以下是它的运作方式: 在我的主要的DialogueSystem.cs脚本里,我把变量...

    2、使用全局类实例变量

    这么做帮了我大忙,特别是在保持组件分离和整洁方面。主要思路是,给每一个脚本设置一个指向这个脚本的某个实例的全局变量,这样你就可以随时访问那个实例,而不必在检查器中一行一行搜索脚本。以下是它的运作方式:

    在我的主要的DialogueSystem.cs脚本里,我把变量放在顶部,与它包含的类有相同的类型,如下:

    public static DialogueSystem instance;
    or in JavaScript:
    static var instance : DialogueSystem;

    然后,在这个脚本的Awake()函数,你只要写:

    instance = this;

    然后简单地把这个脚本依附到你的场景中的任何对象上,当Unity加载那个场景时,那个脚本实验就会给自己设置DialogueSystem.instance。这为什么有用?它意味着如果我想访问我的对话系统,我只需要写下:

    DialogueSystem.instance.SomePublicFunctionName();

    Unity就知道我想调用场景中的DialogueSystem的那个实例的功能。

    注意:这种做法要求在给定场景中只有一个脚本实例。因此,这对于大的组件非常管用,如对话系统,但我想它对于要在场景中多次出现的对象可能没什么用,或者会出问题。如是要你对这个方法更加安全的执行办法有兴趣,那么你就自己Google一下吧。本文说得比较简单了。

    3、使用callback(Delegate或Monobheaviour.SendMessage())

    如果你还是新手,这对你来说可能有点复杂了。

    假设我们有一个NIS (non-interactive sequence),我们希望玩家角色走几步,停下,与NPC对话,然后当对话结束控制权回到玩家手中。因为本文的第二点,我们知道可以简单地从NIS脚本中调用下面的函数,以激活这个对话系统:

    DialogueSystem.instance.SomeFunctionToActivateDialogue()

    但我们怎么知道对话什么时候结束,NIS脚本可以把控制权还给玩家?我们可以使用callback。当我们第一次调用DialogueSystem.instance.Whatever(),我们可以传一些参数给那个函数,当它结束调用通知调用它的脚本时就可以使用的参数。做法有几种。我更倾向于使用C#的Delegate,因为它更干净,但如果你使用的是Javascript,那就不要选它了。

    Delegates (C#)

    把它当作指向一个函数的变量。使用Delegate,你可以把函数A作为参数传给函数B,这样当函数B完成时就可以调用函数A了。在这里我不想详细地说怎么做Delegate,但过程是相当简单的。

    如果有读者要求,我很乐意写一篇更详细的教程。

    MonoBehaviour.SendMessage(string)

    Unity提供了一些使用SendMessage函数的callback函数,前者可以通过函数的名称调用脚本中的函数。例如,假设我们有一个名为“Foo”的脚本,它有一个叫作“FooFunction”的函数。在另一个脚本里,我们需要指向我们的“Foo”脚本的实例的变量,假设这个变量是“ourFooVariable”。那么我们可以调用:

    ourFooVariable.SendMessage(“FooFunction”);

    我们可以给callback使用这个,因为我们可以传脚本的实例和函数名称给另一个函数。例如,在Javascript中:

    Script A:
    ———–
    function Start(){
    ScriptB.MyFunction(this, “MyCallback”); // ‘this’ means this instane of Script A
    }
    function MyCallback(){
    //This will get fired after script B is finished.
    }
    ————
    Script B:
    ————
    function MyFunction(callback : MonoBehaviour, cbName : String){
    //do some stuff
    //…..
    //call back to script A:
    callback.SendMessage(cbName);
    }
    ———–

    使用callback连同全局类实例变量,可以帮助你制作或多或少是独立的组件。在《The Fall》,当玩家在NIS中,对话系统必须触发,NIS只要调用对话系统然后发给它callback,这样对话系统就运作了。当它结束时,对话在原来的NIS中运行callback函数,然后NIS继续完成它的事。一点都不会乱掉。不需要在检查器中把这些系统整理在一起。不需要NIS编码器却调用对话系统。

    4、使脚本失效和启用

    我们再看看刚才那个对话系统的案例。在《The Fall》中,当对话系统被启用时,它会一直在图形用户界面(GUI)上绘制。我没有在脚本中设置检查,看它是否正在显示对话。这样做管用是因为对话系统能够自行启动和失效,还因为第2点和第3点。

    当我激活我的对话系统中的一个对话时,第一条代码就是让对话系统启动它自己:

    this.enabled = true;

    当对话完成,且callback发送后,最后一行代码是使它自己失效:

    this.enabled = false;

    这样做,对话系统不会占用太多资源,只在必要时才生效和。

    5、避免处处使用Update——使用coroutine(协同程序)

    unity开发的一个非常普遍的设计方法是,当只需要运行一次时,把简单的代码放在每一帧都运行的函数中。例如,有一个澈地的淡入和淡出法,在每一帧都检查一次看是否需要黑掉屏幕,然后在0-1之间的数字移动。它在每一帧中都这么做,总是,这完全不必考虑。

    有许多时候,当你想让一个脚本等待一段比较长的时间,然后再根据指令做点什么。我发现,这时候最好使用Coroutine。

    基本上,使用Coroutine,你可以让unity隔着几帧做某事,然后完成后退出。不需要淡入和淡去脚本总是更新,你可以创建一个Coroutine来淡入或淡出屏幕,当完成时就停止,所以Update不会一直进行。

    在JavaScript中,简单的Coroutine如下:

    var fadeAlpha : float = 0;
    function FadeIn(seconds : float){
    while(fadeAlpha != 1){
    fadeAlpha = Mathf.MoveTowards(fadeAlpha, 1, Time.deltaTime*(1/seconds));
    yield;
    }
    }

    如果这个函数运行起来,它会把fadeAlpha的值变成1到你告诉它的秒数。然后你可以把那个fadeAlpha以类似的方式运用到脚本中,在OnGUI函数中。

    整合

    我们使用所有以上想法考虑一下FadeInOut脚本。我们创建一个FadeInOut脚本,然后只放一个实例到场景中,并且禁用它。确保这个脚本有一个静态变量叫作实例,当这个脚本运行它的Awake()函数,它会自己设置实例变量。

    下一步,我们在这个脚本中创建几个类似于上述函数的函数,在FadeIn()的第一行启用那个脚本,在FadeOut()的最后一行禁用那个脚本。

    如果我们想,我们可以执行callback系统,但这个脚本可能太简单了,用不着执行callback系统。

    然后,如果我们还想让游戏屏幕淡出,我们只要调用FadeInOut.instance.FadeOut(1),游戏就会在一秒后淡出。当我们想让它再次淡入,我们可以调用FadeInOut.instance.FadeIn(1),游戏就会在一秒后淡入。

    这样,我们就制作好一个简单的FadeInOut脚本,它是完全独立运作的,不会浪费资源,可以放在任何unity游戏中的任何场景中,不需要设置或在检查器中交接。

    结论

    为了便于组织,制作模块化的东西并不好,但时间久了就能看出价值了。我敢说还有其他设计模式也有助于这个过程。我希望你们能在本文中看出一些东西,但愿我的解释不太令人困惑。


    展开全文
  • Unity3D脚本-script入门

    千次阅读 2014-02-23 14:15:25
    Unity3D的基本操作很容易就能掌握了,接下来就是游戏系统的核心部分:脚本。 什么是Script(脚本)?简而言之,就是使用代码来执行一系列动作命令的特殊文本,它需要编译器来从新解读。U3D内部如何解读脚本,这...
  • 14 Unity 3D脚本编译

    2019-04-03 16:19:15
    主要介绍Unity 3D脚本编译流程,JIT编译、AOT编译、如何将项目发布到Android与IOS上。 一、Unity 3D脚本编译流程 我们都知道,用高级编程语言写成的源代码并不能直接被机器识别并运行,而是通过编译成原生码,也...
  • unity3D脚本生命周期

    2015-10-09 22:30:51
    unity3D脚本生命周期,了解它的工作流程对于脚本编写起着至关重要的作用。我们先来看一张图:   这张流程图清楚的描绘了Unity中脚本的执行顺序,不过为了便于初学者理解我在这里还是详细的讲解一下: 总的来说...
  • Unity3D 全局脚本

    千次阅读 2016-10-12 21:54:17
    我们知道Unity3D在是可以创建游戏场景的,在每个游戏场景中又可以创建游戏对象,把每个场景的游戏对象融合在一起就是一款3D游戏。游戏场景之间属于同等级的关系,为了让游戏场景之前交互我们需要有一个凌驾所有场景...
  • 下载并安装 Unity3D 以及其内置的 MonoDevelop ,内置MonoDevelop已经加入Unity3D联合调试插件。 Unity3D默认支持3种脚本,分别是C#,JavaScript和Boo,运行前均可统一编译成IL运行在MONO框架的Runtime。 Unity3D...
  • 首先,创建C#脚本(Assets-create-C# Script) 可重命名自己需要的名字,双击打开,会弹出u3d默认编辑器 打开后的界面 在void Start()里输入代码 using UnityEngine; using System....
  • 这篇文章主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难。这篇文章的目的是让哪些已经上手Unity3D游戏引擎的朋友学会如何更好的写游戏...
  • 脚本分为 运行时脚本 和 编辑时脚本 两大类,运行时脚本最终会编译进游戏包中,而编辑时脚本仅用于编辑器模式下,不会被打进游戏包。 脚本存放的目录决定了它将编译在哪个DLL 文件中。 Plugins 目录下的脚本优先...
  • Unity3D _脚本之间通信

    千次阅读 2017-12-19 10:41:05
    1.利用在脚本A中定义对外接口函数,然后在脚本B中找到A所在的对象,再找到脚本A,进而调用里面的对外接口函数,这个方法在我的《unity3D NGUI中button响应事件实现》这篇文章中有仔细说明,可以参考。 2.还有一个是...
  • 在PlayerControl脚本里面的Start()函数里调用了音效脚本管理的一个播放文件方法,导致出现这种错误。 注释:assigned是分配的意思。 后来我把音效管理脚本的音效初始化放在了Awake(),让其初始化优先级高
  • Unity3D-C#脚本介绍

    2020-01-26 20:20:06
    Unity3D脚本介绍 脚本就是附加在游戏物体上用于定义游戏对象行为的指令代码。Unity支持C#高级编程语言。 1.语法结构 using 命名空间; public class 类名:Monobehaviour { void 方法名() { Debug.Log("调试...
  • Unity3D入门教程】使用C#脚本控制游戏对象

    万次阅读 多人点赞 2017-01-07 16:57:07
    使用C#脚本控制游戏对象,是一项必备的基本技能。Unity3D可以使用的脚本有C#和javascript等。我们主要讲注意力集中在C#上。本文将会介绍怎样使用脚本控制场景中的游戏对象。
  • Unity3d 脚本开发代码规范

    千次阅读 2016-02-22 00:04:29
    代码规范 代码规范问题是这样的一个问题:高性价比,不被重视,实际做的时候难以做好 ...大家都会说需要有一个统一的规范,但是实际做起来,还是容易各做各的 实际上能遵从统一的代码规范,我在职业生涯里还没有遇到做的特别...
  • Unity3D脚本学习1

    2019-05-06 10:34:22
    Unity3D脚本参考1 一、 脚本概览 这是一个关于Unity内部脚本如何工作的简单概览。 Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的。在脚本对象内部不同志的函数被特定的事件调用。最常用的列在下面: ...
1 2 3 4 5 ... 20
收藏数 7,241
精华内容 2,896
关键字:

unity3d编写脚本软件