精华内容
下载资源
问答
  • 使用说明: 在Assets文件夹下创建Editor文件夹,将复制或拷贝该代码保存成TextureImportSetting.cs放入Editor文件夹,将该脚本放入该文件夹选择需要批量设置的贴图,单击Costom/Texture Import ...unity3d脚本批量更改图

    使用说明: 在Assets文件夹下创建Editor文件夹,将复制或拷贝该代码保存成TextureImportSetting.cs放入Editor文件夹,将该脚本放入该文件夹选择需要批量设置的贴图,单击Costom/Texture Import Settings,打开窗口后选择对应参数,点击Set Texture ImportSettings,稍等片刻,批量设置成功。

    unity3d脚本批量更改图片属性 编辑器插件 TextureImportSetting

    using UnityEngine;
     
    using System.Collections;
     
    using UnityEditor;
     
    ///
     
    ///
     
    ///
     
    ///
     
    ///
     
    ///
     
    ///
     
    ///
     
    public class TextureImportSetting : EditorWindow
     
    {
     
    ///
     
    /// 临时存储int[]
     
    ///
     
    private int[] IntArray = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 };
     
    //AnisoLevel
     
    private int AnisoLevel = 1;
     
    //Filter Mode
     
    private int FilterModeInt = 0;
     
    private string[] FilterModeString = new string[] { “Point”, “Bilinear”, “Trilinear” };
     
    //Wrap Mode
     
    private int WrapModeInt = 0;
     
    private string[] WrapModeString = new string[] { “Repeat”, “Clamp” };
     
    //Texture Type
     
    private int TextureTypeInt = 0;
     
    private string[] TextureTypeString = new string[] { “Texture”, “Normal Map”, “GUI”, “Refelection”, “Cookie”, “Lightmap”, “Advanced” };
     
    //Max Size
     
    private int MaxSizeInt = 5;
     
    private string[] MaxSizeString = new string[] { “32”, “64”, “128”, “256”, “512”, “1024”, “2048”, “4096” };
     
    //Format
     
    private int FormatInt = 0;
     
    private string[] FormatString = new string[] { “Compressed”, “16 bits”, “true color” };
     
    ///
     
    /// 创建、显示窗体
     
    ///
     
    [@MenuItem(“Custom/Texture Import Settings”)]
     
    private static void Init()
     
    {
     
    TextureImportSetting window = (TextureImportSetting)GetWindow(typeof(TextureImportSetting), true, “TextureImportSetting”);
     
    window.Show();
     
    }
     
    ///
     
    /// 显示窗体里面的内容
     
    ///
     
    private void OnGUI()
     
    {
     
    //AnisoLevel
     
    GUILayout.BeginHorizontal();
     
    GUILayout.Label(“Aniso Level  ”);
     
    AnisoLevel = EditorGUILayout.IntSlider(AnisoLevel, 0, 9);
     
    GUILayout.EndHorizontal();
     
    //Filter Mode
     
    FilterModeInt = EditorGUILayout.IntPopup(“Filter Mode”, FilterModeInt, FilterModeString, IntArray);
     
    //Wrap Mode
     
    WrapModeInt = EditorGUILayout.IntPopup(“Wrap Mode”, WrapModeInt, WrapModeString, IntArray);
     
    //Texture Type
     
    TextureTypeInt = EditorGUILayout.IntPopup(“Texture Type”, TextureTypeInt, TextureTypeString, IntArray);
     
    //Max Size
     
    MaxSizeInt = EditorGUILayout.IntPopup(“Max Size”, MaxSizeInt, MaxSizeString, IntArray);
     
    //Format
     
    FormatInt = EditorGUILayout.IntPopup(“Format”, FormatInt, FormatString, IntArray);
     
    if (GUILayout.Button(“Set Texture ImportSettings”))
     
    LoopSetTexture();
     
    }
     
    ///
     
    /// 获取贴图设置
     
    ///
     
    public TextureImporter GetTextureSettings(string path)
     
    {
     
    TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
     
    //AnisoLevel
     
    textureImporter.anisoLevel = AnisoLevel;
     
    //Filter Mode
     
    switch (FilterModeInt)
     
    {
     
    case 0:
    


    展开全文
  • Update:这个函数在渲染帧之前被调用,大部分的游戏行为代码都在这里执行,除 物理代码。...本章我们着重讨论Update 这个函数,创建脚本与绑定脚本的方法在第二章中已经介绍过了不会的盆友请去那里阅读。虽...

    Update:这个函数在渲染帧之前被调用,大部分的游戏行为代码都在这里执行,除 物理代码。

    FixedUpdate:这个函数在每进行一次物理时间步调时被调用,它是基于物理的游戏行为。

    Code outside any function:这类函数在对象加载时被调用,它可以用来脚本的初始化工作。

    本章我们着重讨论Update 这个函数,创建脚本与绑定脚本的方法在第二章中已经介绍过了不会的盆友请去那里阅读。虽然官方推荐脚本使用JavaScript编辑,但是其实C#更符合Unity3D的编程思想,推荐新人先使用JavaScript,然后在学习C#,因为JavaScript更容易上手一些。

    在三维世界中创建两个矩形,然后在添加两个脚本分别绑定在这两个箱子上,脚本的名称暂时命名为 js0 、js1。

    在Project 页面中打开刚刚创建的js0,发现Unity3D 已经将Update 函数添加在脚本中了。

    模型的移动

    Translate方法中的三个参数分别标示,模型在三维世界中X 、Y、Z 轴移动的单位距离。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    function Update () {

    //模型x轴,移动一个单位

    transform.Translate(1,0,0);

    //模型y轴,移动一个单位

    transform.Translate(0,1,0);

    //模型z轴,移动一个单位

    transform.Translate(0,0,1);

    }

    执行代码发现参数为1速度居然移动的着么快,怎么能修改移动的速度呢?

    Time.deltaTime:标示上一次调用Update一秒为标示每帧执行所消耗的时间。

    有了这个参数,我们就可以根据它修改方向移动的速度了。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    function Update () {

    //设置移动的范围

    var translation : float = Time.deltaTime * 10;

    //移动的方向

    transform.Translate (translation, 0, 0);

    transform.Translate (0, translation, 0);

    transform.Translate (0, 0, translation);

    }

    模型的平移可以选择一个参照物,下面代码第二个参数设置模型移动参照物,这里设置成摄像机。那么模型将以相对与摄像机进行移动。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    function Update () {

    //设置移动范围

    var translation : float = Time.deltaTime * 10;

    //相对于摄像机,模型向右移动。

    transform.Translate(Vector3.right * translation, Camera.main.transform);

    // 相对于摄像机,模型向上移动。

    transform.Translate(Vector3.up * translation, Camera.main.transform);

    // 相对于摄像机,模型向左移动。

    transform.Translate(Vector3.left * translation, Camera.main.transform);

    }

    模型的旋转

    Rotate方法中的三个参数分别标示,模型在三维世界中X 、Y、Z 轴旋转的单位距离。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    function Update () {

    //以模型X轴旋转,单位为2.

    transform.Rotate(2, 0, 0);

    //以模型Y轴旋转,单位为2.

    transform.Rotate(0, 2, 0);

    //以模型Z轴旋转,单位为2.

    transform.Rotate(0, 0, 2);

    }

    模型的旋转可以选择一个参照物,下面代码第二个参数设置模型移动参照物,这里设置成3D世界。那么模型将以相对与整个3D世界进行旋转。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    function Update () {

    //设置旋转的范围

    var rotate : float = Time.deltaTime * 100;

    //旋转的方向

    //相对于世界坐标中心向右旋转物体

    transform.Rotate(Vector3.right * rotate, Space.World);

    //相对于世界坐标中心向上旋转物体

    transform.Rotate(Vector3.up * rotate, Space.World);

    //相对于世界坐标中心向左旋转物体

    transform.Rotate(Vector3.left * rotate, Space.World);

    }

    如下图所示,给出一个小例子,在脚本中移动箱子的坐标,在屏幕中记录模型移动的位置,并且显示在游戏视图中。效果很不错吧,嘻嘻~~

    完整代码

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    //X轴移动位置

    var posX : float;

    //Y轴移动位置

    var posY : float;

    //Z轴移动位置

    var posZ : float;

    function Update () {

    //设置移动的范围

    var x : float = Time.deltaTime * 10;

    var y : float = Time.deltaTime * 8;

    var z : float = Time.deltaTime * 5;

    //移动的方向X轴

    transform.Translate (x, 0, 0);

    //移动的方向Y轴

    transform.Translate (0, y, 0);

    //移动的方向Z轴

    transform.Translate (0, 0, z);

    //赋值计算模型在三维坐标系中的位置

    posX += x;

    posY += y;

    posZ += z;

    }

    function OnGUI () {

    //将坐标信息显示在3D屏幕中

    GUI.Label(Rect(50, 100,200,20),"x pos is" + posX +"float");

    GUI.Label(Rect(50, 120,200,20),"y pos is" + posY +"float");

    GUI.Label(Rect(50, 140,200,20),"z pos is" + posZ +"float");

    }

    Unity3D 的世界中脚本还可以做很多事情,以后我在慢慢向各位道来~ 欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,哇咔咔~~~

    展开全文
  • 在上一课的内容中,我们逐行解释了一个新创建Unity游戏脚本中每一行代码的作用。而在这一课的内容中,我们将详细介绍UnityEngine所提供的重要事件函数。还等什么呢?让我们开始吧~02 Unity和C#的双剑合璧-Unity...

    在上一课的内容中,我们逐行解释了一个新创建的Unity游戏脚本中每一行代码的作用。

    2010fdb24df9349e0c3bc402aae53d72.png

    而在这一课的内容中,我们将详细介绍UnityEngine所提供的重要事件函数。

    还等什么呢?让我们开始吧~

    02 UnityC#的双剑合璧-Unity游戏脚本剖析中

    Unity中的脚本和一般计算机程序的运行方式略有不同。一般的计算机程序会在某个循环内持续执行,直到完成任务。而Unity则会通过调用内部事先声明好的函数,把控制间隙性的交给某个脚本。每当某个函数执行完自己的任务后,控制权就会交回给Unity。这些函数被称之为事件函数,当Unity响应游戏中的事件时,它们会被调用。

    Unity使用了特定的命名机制,以识别响应特定事件的函数。到目前为止,我们只用到了两个,也就是Start和Update,实际上还有其它的事件函数,让我们依次来简单认识一下~

    需要注意的是,对于初学者来说,没有必要一开始就陷入很深的细节中不可自拔。对于这一课的内容同样如此,你只需要对这些事件函数混个脸熟。至于每个事件函数在游戏开发中真正应该如何使用,这里即便都讲了相信大家也形成不了很深的印象,我们还是需要用实际的示例来说明。

    需要再次强调的是,所有的这些事件函数都包含在MonoBehaviour这个类中,我们可以在官方文档中找到相关的详细介绍:

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

    以下列出了Unity中最常见同时也是最重要的一些事件,大家先来混个脸熟吧~

    更新事件

    在Unity 中创建一个新脚本时,脚本中会默认添加Update事件函数。

    游戏在某种程度上可以看作一个连续动画,里面的每一帧都是事先设置好的。在游戏中,在渲染每一帧之前,都需要改变游戏对象的位置、状态和行为。而Update函数正是放置此类代码的主要地方。

    例如:

    void Update() {

    float distance = speed * Time.deltaTime * Input.GetAxis("Horizontal");

    transform.Translate(Vector3.right * speed);

    }

    和帧的渲染类似,对物理系统的模拟也需要持续不断的更新。

    对于跟物理系统相关的更新,Unity提供了FixedUpdate事件函数,会在每次物理更新前调用。FixedUpdate和Update函数的最根本区别是,FixedUpdate用于固定频率的更新,而Update的更新频率取决于游戏的帧速。

    在Unity中依次单击菜单项Edit→Project Settings→Time,可以打开Time Manager面板,其中Fixed Timestep选项用于设置Fixed Update的更新频率,默认为0.02秒,即每秒50次。

    通常情况下,FixedUpdate()会比Update()更频繁地调用。当帧率较低时,在某一帧的时间间隔内FixedUpdate可能会被调用多次;而当帧率很高时,在某一帧的时间间隔内FixedUpdate可能根本不会被调用。

    还有一点,在Unity中,如果设置Time Scale值为0,可以实现动力学特性的暂停,即所有在FixedUpdate函数中的代码都不会被执行。

    例如:

    void FixedUpdate() {

    Vector3 force = transform.forward * driveForce * Input.GetAxis("Vertical");

    rigidbody.AddForce(force);

    }

    除了Update和FixedUpdate函数,还有一个LateUpdate函数。

    LateUpdate用于延迟更新,此方法在Update()之后执行,每一帧调用一次。

    关于它们的具体用法和区别,这里先不展开讲,感兴趣的朋友可以查询官方文档了解其作用。

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.LateUpdate.html

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html

    2.初始化事件

    在每个新创建的脚本中都有一个Start()函数,其作用是在游戏的第一帧更新前调用。除了Start()函数,还有一个Awake()函数,用于脚本唤醒。此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。

    也就是说,当某个游戏场景开启的时候,会首先调用Awake()等函数。

    Start方法在Awake之后执行,在脚本的生命周期中只执行一次。

    由于Awake和Start函数的特性与C#中的构造函数类似(一般情况下,在整个脚本生命周期中只执行一次),所以在Unity中也常用来初始化类的成员变量。

    3.游戏界面响应事件

    Unity有个系统用来渲染并响应GUI控件,不过在UGUI系统推出后,它的使用频度和作用相对减少了。

    以下代码可以用来在屏幕中显示一个Game Over的标签:

    void OnGUI() {

    GUI.Label(labelRect, "Game Over");

    }

    关于OnGUI函数的详细用法,请参考:

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnGUI.html

    4.物理检测事件

    物理引擎通过特定的事件函数来判断碰撞、触发等事件,比如OnCollisonEnter、OnCollisonStay、OnCollisionExit分别在碰撞开始、持续与结束时调用。

    如果碰撞体设置成了触发器,则可以调用对应的OnTriggerEnter、OnTriggerStay、OnTriggerExit函数。

    此外,还有对关节的检测事件,如OnJointBreak、OnJointBreak2D等函数。

    例如:

    void OnCollisionEnter(otherObj: Collision) {

    if (otherObj.tag == "Arrow") {

    ApplyDamage(10);

    }

    }

    5.动画控制事件

    Unity提供了动画控制事件函数来处理动画,主要是OnAnimatorIK和OnAnimatorMove。

    具体请参考:

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAnimatorIK.html

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAnimatorMove.html

    6.程序控制事件

    Unity提供了程序控制事件函数来处理程序的启动、暂停、退出等,主要是OnApplicationFocus、OnApplicationPause、OnApplciationQuit。

    具体请参考:

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationFocus.html

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationPause.html

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationQuit.html

    7.游戏对象控制事件

    Unity提供了一系列的游戏对象控制事件函数来处理和游戏对象状态相关的事件,主要是OnEnable、OnDisable、OnTransformChildrenChanged、OnTransformParentChanged等。

    感兴趣的童鞋可以自行到这里搜索查看具体的使用细节~

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

    8.鼠标控制事件

    Unity提供了一系列的鼠标控制事件函数来处理和鼠标状态相关的事件,主要是OnMouseDown、OnMouseEnter、OnMouseExit、OnMouseOver、OnMouseUp、OnMouseUpAsButton等。

    感兴趣的童鞋可以自行到这里搜索查看具体的使用细节~

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

    9.网络系统事件

    Unity提供了一系列的网络系统事件函数来处理和网络连接相关的事件,主要是OnDisconnectedFromServer、OnFailedtoConnect、OnFailedToConnectToMasterServer、OnPlayerConnected、OnPlayerDisconnected、OnMasterServerEvent、OnServerInitialized等。

    感兴趣的童鞋可以自行到这里搜索查看具体的使用细节~

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

    10.视觉渲染事件

    Unity提供了一系列的视觉渲染事件函数来处理和视觉渲染相关的事件,主要是OnDrawGizmos、OnDrawGizmosSelected、OnBecameInvisible、OnBecameVisible、OnPostRender、OnPreCull、OnPreRender、OnRenderImage、OnRenderObject、OnWillRenderObject等。

    感兴趣的童鞋可以自行到这里搜索查看具体的使用细节~

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

    11.粒子系统事件

    Unity提供了一系列的粒子系统事件函数来处理和粒子系统相关的事件,主要是OnParticleCollision、OnParticleSystemStopped、OnParticleTrigger等。

    感兴趣的童鞋可以自行到这里搜索查看具体的使用细节~

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

    12.其它事件

    以上没有提到过的事件函数可以归到这一类。

    在Unity脚本中有如此多的事件函数,那么在实际程序运行的时候有没有一个指定的先后顺序呢?~

    答案是:有的,而且这个执行顺序是Unity官方预先确定的,其执行顺序可以参考下图。

    Unity中的脚本生命周期

    9858d841b6f1f7eced07de4af1d77ebe.png

    看不清楚的 童鞋可以直接在官网看大图~

    https://docs.unity3d.com/Manual/ExecutionOrder.html

    如果这些执行顺序用文字来说明的话,估计大家直接就懵逼掉了。所以,我们用示例来说明,测试事件函数的执行顺序。

    打开上一课创建的FairyLand项目,双击在Visual Studio中打开ExampleScrip.cs文件(在Project视图中是看不到后缀的~处女座童鞋们要注意了)

    更改其中的代码如下:

    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine;

    public class ExampleScript : UnityEngine.MonoBehaviour

    {

    //OnApplicationQuit

    private void OnApplicationQuit()

    {

    print("OnApplicationQuit");

    }

    //OnDisable

    private void OnDisable()

    {

    print("OnDisable");

    }

    //OnDestroy

    private void OnDestroy()

    {

    print("OnDestroy");

    }

    //OnEnable method

    private void OnEnable()

    {

    print("OnEnable");

    }

    //Awake method

    private void Awake()

    {

    print("Awake");

    }

    // Start is called before the first frame update

    void Start()

    {

    print("Start");

    }

    // Update is called once per frame

    void Update()

    {

    print("Update");

    }

    //LateUpdate

    private void LateUpdate()

    {

    print("LateUpdate");

    }

    //FixedUpdate

    private void FixedUpdate()

    {

    print("FixedUpdte")

    }

    //Reset

    private void Reset()

    {

    print("Reset");

    }

    }

    在脚本中实现了上述几个主要生命周期方法。

    注意:

    1.当我们手动敲代码的时候,在创建这些事件函数的时候会自动添加一个private在前面。其实默认情况下,不添加public就等于添加了private~

    2.这里的print和之前我们用的Debug.Log是一回事,就看大家习惯用哪个了,都是在Unity编辑器的Console视图中输出信息。

    在运行场景之前,请确保勾选了 Console 窗口的 Collapse 选项,如图所示。

    之所以要勾选这个选项,是因为有些事件函数(如Update会反复输出~)

    运行场景,会输出各个生命周期方法的执行次数,如图所示:

    结束场景后,可以清楚看到:最先执行的是Awake()方法,然后是OnEnable()方法,随后是Start()方法,这三个方法都执行了一次

    接下来调用的是FixedUpdate()方法。

    而Update()和LateUpdate()方法执行频率一样,都是每帧执行一次。

    最后结束场景的时候,调用到了OnApplicationQuit()、OnDisable()和OnDestroy()方法。

    当然,有些事件函数并没有展示其作用。而且这些只是Unity生命周期的一部分,其他部分会在后续章节中详细讲解。

    Unity Events 不仅仅包含脚本的生命周期,还包含一些由系统自动调用的方法,也就是“回调”。大家需要明白的是,这些方法不由开发者自己调用,而是由Unity在适当的时候自行调用,开发者只要实现这些方法即可。

    这一课的内容相对比较枯燥,但是再次强调,大家无需完全看懂,只需要留下个大概的印象就好。

    关于事件函数的具体使用,我们会在后续的示例游戏开发过程中让大家更全面深入的了解~

    好了,那么下一课是不是就要开始动手开发游戏了?

    且慢,我们还有最后一堂小小的理论课要上,那就是关于Unity游戏脚本中的系统类和方法。和本课的内容一样,下一课的内容仍然只是让大家构建一个基本的概念,混个脸熟而已~

    好了,让我们下一课再见。

    展开全文
  • Unity3D】点击图片生成物体

    千次阅读 2018-09-05 15:10:18
    一、前言 今天给大家分享一个如何点击图片生成物体的脚本,可以把这个脚本稍微封装一下,以后也可以方便使用...3.创建两个预制体在Resources文件夹 名字就没有改(懒..) 2.新建脚本test01.cs 代码如...

    一、前言

    今天给大家分享一个如何点击图片生成物体的脚本,可以把这个脚本稍微封装一下,以后也可以方便使用。
    主要试用与点击图片时候响应事件,具体用法还要大家多多摸索

    二、效果

    这里写图片描述

    三、正文

    步骤:

    1.新建2个Image

    这里写图片描述这里写图片描述这里写图片描述
    就改下名字,其他属性都不用改

    3.创建两个预制体在Resources文件夹

    这里写图片描述
    名字就没有改(懒…)

    2.新建脚本test01.cs

    代码如下:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;
    
    public class test01 : MonoBehaviour
    {
        //图片名字
        string imageName;
        //预制体对象
        GameObject part;
    
        void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                //如果获取到对象的话
                if (OnePointColliderObject() != null)
                {
                    //给图片名字赋值
                    imageName = OnePointColliderObject().name;
                    //创建对象
                    InstantObject();
                }
            }
        }
    
        /// <summary>
        /// 点击对象
        /// </summary>
        /// <returns>点击对象获取到对象的名字</returns>
        public GameObject OnePointColliderObject()
        {
            //存有鼠标或者触摸数据的对象
            PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
            //当前指针位置
            eventDataCurrentPosition.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
            //射线命中之后的反馈数据
            List<RaycastResult> results = new List<RaycastResult>();
            //投射一条光线并返回所有碰撞
            EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
            //返回点击到的物体
            if (results.Count > 0)
                return results[0].gameObject;
            else
                return null;
        }
    
        public void InstantObject()
        {
            switch (imageName)
            {
                case "Image_1":
                    GameObject obj01 = (GameObject)Resources.Load("Cube");
                    part = Instantiate(obj01, Vector3.zero, obj01.transform.rotation);
                    break;
                case "Image_2":
                    GameObject obj02 = (GameObject)Resources.Load("Sphere");
                    part = Instantiate(obj02, Vector3.up, obj02.transform.rotation);
                    break;
                default:
                    break;
            }
        }
    }
    
    
    

    代码比较简单,就不多说了,都有注释。
    主要讲一下OnePointColliderObject这个函数中的

    • EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
    • RaycastAll的主要特性就是使用光线投射碰撞:在还没有发生真正的物理碰撞之前,就响应碰撞。
    • public void RaycastAll(PointerEventData eventData, List raycastResults);

    OK,大家可以试一下,有什么新奇的点子也可以留言哦

    展开全文
  • 废话不多说,直接上代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建...
  • Unity3D全景视频渲染

    2020-02-22 22:51:14
    Unity3D全景视频渲染Unity3D创建场景SphereMaterialShaderRender Texture编写CS脚本进行渲染创建脚本完整代码实现效果参考链接     实现在Unity3D中渲染YUV420P文件,可以渲染一帧(即全景图片),也可以渲染...
  • unity3D 2017版本 为啥我在assets文件夹下手动创建一个Test.js 在控制台一直红色感叹号 不让我绑定脚本到物体 ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578653879_136722.png) 而且点击后没有进入...
  • easyAR unity3d识别拍照图片

    千次阅读 2017-07-08 13:04:32
    这个图片中,gameObject左边加载了两个脚本。 FilesManager:用来进行拍照的。 ImageTargetManager:用来动态创建GameObject,来追踪拍出来的照片的其中TargetOnTheFly的关键代码:private void Awake() { image...
  • 本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下创建Image的UI组件,在Image下新建一个Button按钮。在Image 和Button上拖进Sprite图片在Button按钮上挂载该脚本using System....
  • 转载自风宇冲Unity3D教程学院往wamp路径下的www文件夹下拖入一张图片,这里使用的是cat.jpg, 输入http://localhost/cat.jpg,可以查看到图片如下后,新建unity工程,创建一个球体,创建一个任意名称材质,并赋予该...
  • Unity3d 调用IOS相册

    2019-03-04 09:19:39
    Unity3d 调用IOS相册Unity3d 调用IOS相册软件环境.h/ .m文件编写unity3d 调用脚本合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定...
  • unity3D入门

    2013-03-31 22:26:48
    打开unity3D ,首先是简单的界面的介绍: 1、 Project窗口:这个窗口相当于项目管理器,窗口里的文件夹对应于你所创建的项目文件夹(你可以在你创建的项目路径下找到这些文件)。在此窗口你可以很方便的管理你的...
  • 本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下 创建Image的UI组件,在Image下新建一个Button按钮。在Image 和Button上拖进Sprite图片 在Button按钮上挂载该脚本 using ...
  • Unity3D入门介绍

    千次阅读 2012-02-09 16:24:03
    打开unity3D ,首先是简单的界面的介绍: 1、 Project窗口:这个窗口相当于项目管理器,窗口里的文件夹对应于你所创建的项目文件夹(你可以在你创建的项目路径下找到这些文件)。在此窗口你可以很方便的管理你的...
  • 基于Unity3D技术的纸牌消除游戏 1 项目的创建和资源的导入 在Project下创建好需要的四个文件夹,其中Resources文件夹是用来存放A-K和大小王正面纸牌资源,Textture文件夹用来存放带有Restart、END、Level 1、Level 2...
  • Unity3D性能优化之资源导入标准和属性设置篇 时间:2020-05-21 16:02:52 收藏:0 阅读:271 一、Unity使用的资源 1、外部资源: 不是Unity创建,而是外部工具做的模型以及贴图或通用的格式资源。例如图片资源...
  • 二、创建一个新的表面着色器,并修改其脚本代码: 将该着色器置为当前球体的默认着色器 三、关掉场景中的天空盒: 四、删除原有CAMERA,添加cardboardmain到场景中: 五、向场景中添加方向光,...
  • Unity3D之虚拟摇杆

    2017-08-03 19:34:09
    这是一个轻量级的虚拟摇杆 第一步:添加UI图片在场景中,并改名...第四步:在Joystick图片创建子物体图片Point,为图片添加Event Trigger脚本,添加Drag和Point Up事件 第五步:建立空物体Border 设置锚点
  • Unity3d NGUI 摇杆实现

    2018-02-01 14:58:45
    2.创建摇杆,设置前置图片和背景图在同一物体下,给背景图添加碰撞体和脚本,并且设置前置图片: 代码: using UnityEngine; using System; public class GameRocker : MonoBehaviour { private static ...
  • Unity3D】粒子光环

    2020-12-02 22:55:49
    作业要求 ...这个网站打不开,参考了一下师兄们的博客的图片: 我看了一下,我感觉和上课做的粒子海洋有一些相似,就是需要变成一个环形。...创建一个脚本ParticleCircle public ParticleSystem mypa
  • NGUI 2.6.1下载: part1 part2 NGUI 实现Sprite精灵动画很简单: ...2.创建一个Sprite , 3.给Sprite添加脚本: 4.设置脚本的参数 调节动画的速度: 转载于:https://www.cnblogs.com/WilliamJ...
  • Unity3D 之UGUI 按钮

    2016-05-22 00:18:00
    新建一个按钮 按钮对应的属性 按钮下面只有一个文本的 游戏对象,是Button对应的显示文字 Interactable -->...变换,对应各种关于按钮的设置,...首先,随便创建一个脚本 using UnityEngine; using Syste...
  • 中山大学中山大学数据科学与计算机学院3D游戏课程学习记录博客。 游戏代码:link 游戏视频:link 游戏要求 模仿太阳系行星的旋转,而且行星不再同一法平面。 游戏实现 创建球体,调整大小作为太阳系的行星,摆放...
  • 不是Unity创建,而是外部工具做的模型以及贴图或通用的格式资源。例如图片资源、模型资源、动画资源、视频和声音资源。 2、内部资源: Unity创建的,并且只有放在Unity才能识别。例如脚本、Shader、场景、预设、...
  • unity3d WWW类的简单使用

    千次阅读 2018-09-04 21:52:45
    首先创建场景,创建一个Cube,搭载界面,两个Button.  在Cube上添加脚本,内容如下:  private Texture text0;//下载本地图片  private Texture text1;//下载网络上的图片  public Button but1;//本地...
  • Unity3D–通过携程控制跳转场景的渐隐渐现 1:创建UI–image,再设置锚点,alt+鼠标左键,把图片铺满 2:image 下挂载脚本 2.1:变量和引用命名空间 using UnityEngine; using UnityEngine.UI;//ui using UnityEngine...
  • unity3d实现序列帧动画

    2013-11-27 15:19:00
    场景中随便创建一个物体,这里以Cube为例 将图片拖放到Cube上,这样会在Cube的6各面都有3个bird,为了美观显示一个鸟,我们调整材质的Tiling的X = 0.33333,这样就会显示第一个鸟了 下面我们来通过脚本来实现鸟的眨眼和...
  • Unity3D 离线中文文档/手册 HTML 清理版/最新到2020.1 这篇文章的发起原因下载的离线html的缺陷解决方法 —— 使用lua脚本对这些html进行清理欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的...
  • Unity3d制作虚拟按钮控制人物移动

    千次阅读 2017-11-03 23:57:44
    创建Image的UI组件,在Image下新建一个Button按钮。在Image 和Button上拖进Sprite图片 在Button按钮上挂载该脚本 using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using ...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

unity3d创建图片脚本