zoukankan      html  css  js  c++  java
  • Unity3D入门之Unity3D介绍以及编辑器的使用(1)

    1.Unity3D介绍

    Unity3D是跨平台(IOS、Android、Windows Phone、Windows、Flash、XBOX360、PS3、Wii等)游戏引擎,可以开发2D、2.5D、3D游戏。appstore手机上有1500+款用Unity3D开发的游戏。

    什么是游戏引擎?开发简单、高度封装(OpenGL、DirectX)。其他游戏引擎: Cocos2d、UDK、 Unreal Engine 3、 Quest3D 等。

    2.为什么使用Unity3D?跨平台;费用便宜(非开源,有免费版)

    3.游戏开发常识

    游戏术语

    •  手游(新增长点);网游(捉迷藏OL,U3D);端游(需要下载客户端);页游(WebGame)

    •  FPS(First Person Shoot/Frame Per second);MMO( Massively Multiplayer Online,大型多人在线);RPG(虚拟人生,浪漫庄园)

    •  2.5D(用2D模拟出来的3D。中国2D网游占据8成市场);锁定视角3D(视角固定,不足够炫,但是不头晕,开发难度低,建模建3面即可)

    •  第三人称;第一人称;

    •  单机游戏;网络游戏:大公司使用自主引擎,中小公司使用Java开发的 smartfoxserver 、C#开发的Photon(底层C++) 等;

    •  运营商、游戏代理、渠道商:开发商自己要处理推广、支付、打击盗版等,一般和渠道商合作分成。比如《捕鱼达人》android版90%收入来自渠道。Android手机游戏开发的困境,渠道太多,N多打包;

    游戏公司分工:策划;美工;程序员;测试;客服等。黑话:主程、主美

    4.Unity3D基本使用

    •  Hierarchy中Create一个Cube立方体,在Inspector中修改它的Position XYZ为0;

    •  添加一个光源照亮场景Directional light,Position XYZ为(0,2,2);

    •  修改摄像机MainCamera(摄像机看到的就是屏幕看到的)的Position为(0,2,-6),看起来清楚一些

    •  Project中Create一个C# Script,编写一个拖动Cube旋转Cube的功能。

    •  把脚本拖到Cube上(拖到Hierarchy中比较准确)。

    代码如下:

    using UnityEngine;
    using System.Collections;
    
    public class CubeControl : MonoBehaviour
    {
        //unity3D中常用的几种系统自调用的重要方法
        //首先,我们有必要说明一下他们的执行顺序:
        //awake--start--update--fixedupdate--lateupdate--OnGUI--reset--onDisable--onDestory
        // Start仅在Update函数第一次被调用前调用
        void Start()
        {
    
        }
        //每一帧都调用Update()方法
        void Update()
        {
            //可以在控制台输出上一次调用Update()方法时所用的时间
            //Time.deltaTime 它表示距上一次调用Update或FixedUpdate所用的时间,
            //因此通过它可以让游戏对象按照一个常速进行旋转,而不是依赖于它的帧频:
            Debug.Log(Time.deltaTime);
        }
        //OnGUI是在渲染和处理GUI事件时调用。比如:你画一个button或label时常常用到它。这意味着OnGUI也是每帧执行一次。
        void OnGUI()
        {
           
            //bool isClick = GUI.Button(new Rect(30, 30, 100, 20), "按钮");//返回是否点击了按钮,点击返回true
            //if (isClick)
            //{
            //    //点击一次,模型绕着x轴旋转Time.deltaTime * 40度
            //    transform.Rotate(new Vector3(Time.deltaTime * 40, 0, 0));
            //}
            //GUI.RepeatButton 是长按按钮
            bool isClick = GUI.RepeatButton(new Rect(30, 30, 100, 20), "按钮");//返回是否点击了按钮,点击返回true
            if (isClick)
            {
                //点击一次,模型绕着x轴旋转Time.deltaTime * 40度
                transform.Rotate(new Vector3(Time.deltaTime * 40, 0, 0));
            }
        }
    }


    5.抗锯齿:主菜单→Edit→Project Settings→Quality,AntiAliasing选为4x(越大越平滑但是越占资源)

    6.体验跨平台:File→Build Settings,构建为exe、flash,如果有android、ios等开发环境还可以构建为手机软件。

    7.脚本基础

    C#脚本不支持命名空间,脚本在Project中的显示名称不要加cs,类名要和cs名称一致,所有类继承自MonoBehaviour。跟具体游戏对象无关的脚本可以放到摄像机MainCamera中。不要不正确的给一个游戏对象设置多个脚本对象

    初始化不要放到构造函数中,而是放到Start()方法中。

    放到游戏对象中的脚本(实例化)可以在Inspector中修改属性,get/set写法属性不被识别,直接public字段就能当属性用,private或者不写修饰符就是私有字段。

    8.程序的调试

    程序的运行时调试消息输出:Debug.Log(),显示到Console视图(window→console打开)

    项目的断点调试:启动MonoDevelop,主菜单Tools→Options→Unity→Debugger的Editor选择Unity开发环境Unity.exe的程序的路径;然后MonoDevelop打开项目(注意Unity不要同时打开这个项目),然后主菜单Run→Run With→Unity Debugger就可以启动调试了。建议使用Debug.Log()调试,优秀程序员的素质。

  • 相关阅读:
    推荐美丽的flash网页MP3音乐播放器
    android混合动画实现
    swift UI专项训练39 用Swift实现摇一摇功能
    The return type is incompatible with JspSourceDependent.getDependants():JasperException问题分析与解决方法
    【翻译自mos文章】注意: ASMB process exiting due to lack of ASM file activity
    表格对象QTableWidget相关常见方法
    python 加密解密
    python报错ordinal not in range(128)
    scp,ssh双机互信操作步骤
    PyQt多窗口调用
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/3486027.html
Copyright © 2011-2022 走看看