• 1.动画倒放 animation.speed *= -1.0; Animation.PlayQuened()方法可连续播放不同动画组 2.寻找场景中物体var door = GameObject.Find("door").transform; 3.全局变量用法,A.js 里的 static var AAA ...

    1.动画倒放 animation.speed *= -1.0; Animation.PlayQuened()方法可连续播放不同动画组

    2.寻找场景中物体var door = GameObject.Find("door").transform;

    3.全局变量用法,A.js 里的 static var AAA 到 B.js 里调用方式为 A.AAA
    4.function Awake() 创建一个物体时自动运行的程序
    5.js 中可以使用 "" +  0 将数字转换为字符串
    6.3d字体较为模糊是因为使用了anti-aliasing,可以创建大的字体物体,将字体属性中的 size 设为小一些来解决
    7.InvokeRepeating(函数名, 开始执行函数的时间, 调用函数的间隔时间);和 Update() 差不多但可以间隔着时间执行
    8.Quaternion.Slerp(起点,目标点,期间耗费时间),另外四元数的前三位数代表坐标旋转,最后一位代表坐标位置

    9.解决轴心问题,用物体绑定到 Empty GameObject 之下
    10.隐藏鼠标 Screen.showCursor = false;
    11.FixedUpdate()以指定频率被调用。
    可以在 Edit -> project settings -> Time -> Fixed Timestep 中设定该频率。
    12.计算圆半径 wheel.tireGraphic.renderer.bounds.size.y / 2;
    13.显示载入关卡的进度条

    1
    2
    3
    4
    5
    6
    var levelToLoad = 1;
    function LoadNewLevel () {
        if (Application.CanStreamedLevelBeLoaded (levelToLoad)) {
            Application.LoadLevel (levelToLoad);
        }
    }

    如果想在播放器中显示下载进度,可以通过GetStreamProgressForLevel()函数来读取进

    度。
    14.用灯光中的 cookie 选项可以模拟移动的云的阴影
    15.模拟爆炸伤害
    1)
    使用 Component->Particle->World Particle Collider 添加一个粒子碰撞物体
    如果 Send Collision Message 被启用, 任何发生碰撞的粒子都会发送一个
    OnParticleCollision()到粒子系统附加的物体和与粒子发生碰撞的物体上。
    2)
    调用 OnDrawGizmosSelected () 或者 OnDrawGizmos() 函数
    16.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function Update () {
        if (Input.GetButtonDown ("Jump")) {
            if (renderer.material.mainTexture.isPlaying) {
                renderer.material.mainTexture.Pause();
            }
            else {
                renderer.material.mainTexture.Play();
            }
        }
    }

    17.

    1
    2
    3
    4
    function Start () {
        yield WaitForSeconds(3);
        print("hello");
    }.

    18.容器菜单里的选项随着导入工程而变化
    19.把物体直接层级面板拖动到工程面板就是Prefab了
    20.
    @script AddComponentMenu("Universol Conraller/Cube Controller") //把容器添加进菜单栏
    @script RequireComponent(Llight)  在物体中加入某个容器
    21.Camera.main可以得到相机
    22.Collider 必须搭配 Rigidbody 来使用,就像 Rigidbody 必须搭配 GameObject 一样
    23.RigidBody 中的 IsKinematic 勾选后就不受物理控制了,没有重力了,但加了碰撞的Rigidbody物体还是会接收碰撞,但只能该物体碰撞它物体,如果受到它物体的碰撞不会发生反应,但触发器能接收信号,一般 IsKinematic 物体在完全受用户控制而不受其他物体影响时使用
    宜于勾选的物体
    赛车、子弹、人物、地形等
    不宜勾选的物体
    可被撞倒的路边垃圾桶、足球等
    RigidBody 中的 Continuous/Continuous Dynamic 可以让运动物体碰撞静止物体时产生触碰信号
    RigidBody 中的 sleepVelocity 可以忽略最小的运动来停止
    24.Reset() 替换,用于设置物体的默认值也可以用
    25.几个物体只要一个激活了其他就不能被调用的情况可以用设置 Static 物体来处理
    26.iphone的常亮:iPhoneSettings.screenCanDarken = false;
    27.
    Good organization is important if you want your workflow to be smooth and hassle

    free.

    Use instantiated Prefabs wherever possible.

    Try organizing by function instead of type.

    Use Empty GameObjects as containers.

    28.音效来源Apple's own Garage Band, Logic Studio 8 and Soundtrack / Soundtrack Pro software
    29.CollisionFlags 可判断出碰撞物体的方向
    30.Camera 容器的 Depth 参数可以调整几个摄像机的层级关系
    31.为什么这里要用 SendMessage();playerLink.GetComponent(ThirdPersonController).SendMessage("HidePlayer");
    32.LOD(Level-of-detail 编辑器)
    33.QualitySettings.currentLevel = QualityLevel.Fastest;
    34.ctrl + shift + n 新建 Empty GameObject
    35.BeginGroup + EndGroup 可以创建一个类似 window 的区域,同时进行移动操作
    36.导入文件时勾选 Generate Colliders 选项会自动为物体加入 MeshCollider 碰撞体
    37.如何查看场景是否已经完成预加载,显示进度条功能

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function Start() {
          var async : AsyncOperation = Application.LoadLevelAsync("Game");
          yeild async;
          Debug.log("Loading Complete");
    }
    function OnGUI() {
          //显示进度条
          GUI.Label(Rect(100,300,200,200),(Application.GetStreamProgressForLevel(1) * 100.ToString(), "%");;
          //如果已经预加载完毕,则点击 Start 进入场景
          if(GUI.Button(Rect(100,100,200,100), "Start")){
               if(Application.CanStreamedLevelBeLoaded(1)) {
                      Application.LoadLevel("Game");
                }
          }
    }

    另外WWW.Progress 可以检测下载进度(0~1)
    EditorUtility.DisplayProgressBar 可以显示进度条
    38.Unity 下载 OGG 音乐

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class DAudio: MonoBehaviour
    {
        string url = "http://XXXXXXXXXXXXXXXXXXXXXXXX.ogg";
        WWW myWWW;
        AudioClip ac;
        IEnumerator WWWLoading()
        {
            myWWW = new WWW(url);
            yield return myWWW;
            ac = myWWW.audioClip;
        }
        void Start()
        {
            StartCoroutine(WWWLoading());
        }
        void OnGUI()
        {
                if (myWWW.isDone)
                    audio.clip = ac;
        }
    }

    39.Unity API 坏了,搜索 API 时看似搜到了结果,但一条结果都未显示
    上网下载 index.js覆盖原有的 index.js

    40.各种常用数学函数
    Mathf.CeilToInt: 根据小数取整,如果该数不是整数,就一个正的小数让他变成整数
    Mathf.FloorCeilToInt: 根据小数取整,如果该数不是整数,就一个正的小数让他变成整数
    Mathf.RoundToInt: 根据小数取整数,四舍六入,如果小数是 0.5,则根据当前整数位取偶数整数
    41.判断是否下载完毕
    使用 myWWW.isDone 或者 myWWW.progress == 1f  来判断
    尤其注意判断条件要写在 OnGUI() 里,不能写在 Update() 里,否则判断结果会有误差
    42.如何在多个脚本中控制每个 Start 函数调用的先后顺序
    在一个主 Start() 函数中依次调用各个脚本的初始化函数
    使用全局静态变量,当前一个脚本中的相应初始化函数模块初始化完毕后,改变全局静态变量值来通知下一个脚本开始初始化。
    43.自定义函数继承 Transform 或 GameObject 的方法
    严格的来说是不行的,一般只能使用将自定义类作为 Component 绑定到物体上的方法,该物体可以是新建的 GameObject 或者克隆出的物体皆可
    44.用 VS2010 打开项目文件失败,如下提示:
    Couldn't call method SyncVisualStudioProject because the class SyncVS couldn't be found.
    UnityEditor.DockArea:OnGUI()
    解决方法:在 Unity 中,改变项目中的该脚本的位置(拖至其他文件夹下或最顶层),不要放在文件夹里打开,此时即可用 VS 打开,然后如果再拖回先前的文件夹后,也依然能打开
    45.GUI 图片按中心进行旋转或缩放
    RotateAroundPivot(float angle, Vector2 pivotPoint)
    ScaleAroundPivot(Vector2 scale, Vector2 pivotPoint)
    46.if 语句尽量使用大括号,否则容易出现让人摸不着头脑的错误
    比如:
    if(false)
        Debug.Log("AAA");
    else
        Debug.Log("BBB");
    print("CCC");
    由于Debug最终不输出,结果就被编译成了
     if(false) {
        else{
            print("CCC");
        }
    }
    47. 查看自身能否看着目标物体(目标物体是否在背后)
    Vector3 dir = (target.position - transform.position).normalized;
    float direction = Vector3.Dot(dir, transform.forward);
    48.如何建立不受父亲物体影响的位置移动
    Transform.TransformDirection(Vector3 direction)
    Transform.Translate(Vector3 direction, Space.World)
    49.通过脚本控制物体的几种方法
    1) 通过 GameObject.Find("物体名字") 保存该物体,然后就可随意对其控制了
    2) 脚本中设置 public transform 物体,脚本给其他物体后,在外部把相应物体拖入
    3) 直接给该物体,脚本中直接使用 transform 来控制
    50.参照某一点缩放整个 GUI 的方法
    GUIUtility.ScaleAroundPivot (Vector2 scale, Vector2 pivotPoint);
    51.截屏的方法
            Texture2D tex;              //截图生成的图片

            //最终获取图像大小

            tex = new Texture2D((int)texMax.z, (int)texMax.w, TextureFormat.RGB24, false);

            //截取屏幕的区域

            tex.ReadPixels(new Rect(texMax.x, texMax.y, texMax.z, texMax.w), 0, 0);

            //接受大小修改

            tex.Apply();
    52.动态缩小图片的方式
    GUI.DrawTexture(new Rect(shotPngX, camRect.y, shotPngWidth, camRect.height), tex, ScaleMode.StretchToFill, true);
    53.计算匀速数字变化
    height = Mathf.Lerp(height, 10f, flightSpeed * Time.deltaTime / (10f - height));
    54.如何锁定轴向运动
    Component >> Physics >> Configurable Joint
    55.在视图中按下 Ctrl + F,可以快速输入要查找的物体名字来定位物体
    56.如何显示局部 GUI 界面
    通过 GUI.Window() 作为窗口物体
    57.相机剔除,也就是选择相机所看到的层
    camera.cullingMask = 1 << LayerMask.NameToLayer("LayerName");
    或者camera.cullingMask = Mathf.Pow(2, LayerMask.NameToLayer("LayerName"))
    前一种效率更高,后一种让代码更易读
    想添加多个剔除的话可以用

    1
    2
    camera.cullingMask = 1 << LayerMask.NameToLayer("LayerName1");
    camera.cullingMask += 1 << LayerMask.NameToLayer("LayerName2");

    …………
    58.鼠标经过按钮提示文字标签功能

    1
    2
    GUI.Button(newRect(10, 10, 100, 20), newGUIContent("Click me""This is the tooltip"));
    GUI.Label(newRect(10, 40, 100, 40), GUI.tooltip);

    59.焦点改变事件

    1
    2
    3
    curFocus = GUI.SetNextControlName("name");
    name = GUI.TextField(nameRect, name);
    GUI.GetNameOfFocusedControl();

    注:Button不能记录 Focus 事件,需要手动记录

    例如:
    if(GUI.Button(ApplyRect, "OK"))
    {
            curFocus = "OK";
    }

    60.选择打开项目

    双击图标马上按下 Alt 键,即出现项目选择窗口

    61.如何自定义Webplayer载入Logo及进度条?

    <param name="logoimage" value="Logo文件名" />,<param name="progressbarimage" value="进度条名"  />,<param name="progressframeimage" value="进度条外框名" />.

    62.Bake参数显示灰色,不能进行任何设置的问题


    由于编辑时点选了右侧"Generate Beaset Setting file"菜单栏的选项

    这是为高级用户提供的编辑方式,使其可通过更改"BeasetSettings.xml"文件内容来配置烘焙参数

    当然也可以删除"BeasetSettings.xml"文件来恢复原来界面

    63.在Assets中新建一个文件夹"WebPlayerTemplates",其中的资源会用作Unity网页版发布

    64.什么是像素渲染

    阴影、法线贴图、灯光遮罩、高精度高光等

    65.

    通过相机与物体的距离求相机高度

    height = 2 * distance * Mathf.Tan(camera.fieldOfView * .5f * Mathf.Deg2Rad);

    通过高度和距离得到视野角度

    1
    camera.fieldOfView = 2 * Mathf.Atan(height * .5f / distance) * Mathf.Rad2Deg;

    66.

    通过视椎体高度、距离求相机角度

    1
    var camera.fieldOfView = 2 * Mathf.Atan(frustumHeight * 0.5 / distance) * Mathf.Rad2Deg;

    通过相机角度、距离求视椎体高度

    1
    var frustumHeight = 2.0 * distance * Mathf.Tan(camera.fieldOfView * 0.5 * Mathf.Deg2Rad);

    67.相机长宽比

    camera.aspect

    68.通过压缩相机下部显示,使相机斜切

    1
    2
    3
    4
    5
    6
    function SetObliqueness(horizObl: float, vertObl: float;) {
        var mat: Matrix4x4 = camera.projectionMatrix;
        mat[02] = horizObl;
        mat[12] = vertObl;
        camera.projectionMatrix = mat;
    }

    相机斜切规律

    定义相机斜切角度为A,当A<0(向左或向下斜切,图像向右或向上偏移),当A>0(向右或向上斜切,图像向左或向下偏移)

    69.替换 Unity Logo 登录界面

    File -> Build Settings… -> Player Settings -> Splash Image

    70.如何防止休眠

    1
    2
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,WindowManager.LayoutParam

    Screen.sleepTimeout = 0;

    71.如何实现振动效果

    Handheld.Vibrate


    Unity的Bug

    Unity3.5 的 "Partical System" 组件添加完后,右侧 Inspector 中已经存在了 "Particle Renderer",但是用户还能够使用菜单选项 "Component/Effects/Legacy Particles/Particle Renderer" 继续添加一遍该组件

    插件

    1.GUI 的插件:NGUI、IGUI、UIToolKit

    2.地形插件:TerrainToolkit
    模型类型
    FBX, dae, 3DS, dxf, obj
    图片类型
    PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF

    音频视频

    PICT, MP3, AIFF, WAV, OGG, MOV, MPG, MPE

    平台支持

    PC, Mac, Flash Player11, Wii, Xbox360, PS3, IOS, Adroid

    3.建议的元素配置

    三角面在25万以下/低配机尽量不要使用像素渲染/同样材质尽量合并

    4.使 Unity3D 程序运行效率降低的因素

    三角面数过多/程序算法过于复杂/灯光阴影计算方式参数过高/物理碰撞体计算量过大


    http://hi.baidu.com/jijingmeihua/item/1c86d1cc7e73f72a46d5c026




    MadeByLuckyDog



    展开全文
  • 7.15日 学习笔记 今天是我第一次接触到unity3d,其中我感觉到了简单游戏模型的制作和c#语言在游戏编程的重要性。 上午: 安装了unity3d花了整整一个上午,受益最大的是关于该软件的安装方法对于unity3d的安装和注册...

    7.15日 学习笔记
    今天是我第一次接触到unity3d,其中我感觉到了简单游戏模型的制作和c#语言在游戏编程的重要性。
    上午:
    安装了unity3d花了整整一个上午,受益最大的是关于该软件的安装方法对于unity3d的安装和注册的确需要一些经验才能快速感受到做游戏的乐趣。
    下午:
    通过一个上午视频学习,总觉得视频内容较为简单,但是在下午实际操作却出现种种错误,unity3d需要多种功能合并使用并且其给予初学者的感觉是种类繁多,形式复杂,建立复杂游戏模型需要不断改进方位进程所以有时觉得写入脚本更为轻松,unity3d理论上应是多个辅助软件集合体,如果做出一个好的游戏只有unity3d是远远不够的,虽然unity3d作用软件广泛但功能并不精通,好比今天下午做游戏时出现了关于模型颜色问题,百度上给出的答案是利用ps建立好资源包后再通过unity3d进行塑性,而实际上确实如此unity’3d的改颜色方法虽然有但是改过颜色的模型在不同视角却看起来极其粗糙,刚开始接触c#时觉得类多麻烦,有时甚至不能够理解其作用。如今茅塞顿开。
    晚上:
    晚上完善了下午做的内容,知道了var的声明含义与c#语言在unity3d的对各个不同功能衔接语句,我觉得这是个日益积累的过程,故不积跬步,无以至千里。其实在今天最大的收获是单词的积累。比如scrpit,component,等等(今天不认识的生词太多了)让我知道了学好英语的重要性。

    展开全文
  • Unity3D学习笔记总结

    2013-12-21 21:34:06
    编辑器: Hierarchy窗口中是场景中的Game Object列表 Project窗口中是磁盘上Assets文件夹中的内容,可用来创建Game Object 调试: ...因Unity采用的是Mono运行时引擎而不是CLR,参考Debugging us
    1. 编辑器:
      1. Hierarchy窗口中是场景中的Game Object列表
      2. Project窗口中是磁盘上Assets文件夹中的内容,可用来创建Game Object
    2. 调试:
      1. 调试用Debug.Log()或者print函数打日志
      2. 目前完全无法采用VisualStudio进行调试,只能用MonoDevelop。因Unity采用的是Mono运行时引擎而不是CLR,参考Debugging using Visual Studio 2010
        1. 另发现UnityVS插件,Write and debug your Unity games inside Visual Studio
        2. 官方文档: Debugger
      3. MonoDevelop对Unity的attach调试不能跨dll
    3. Mono:
      1. Unity自带Mono版本可能是2.6
        1. Which version of mono used in Unity 3.2?
      2. 目前应谨慎考虑采用Mono写需长时间运行的服务器程序
    4. MonoDevelop:
      1. MonoDevelop写的源码文件会以UTF8 Unix结尾方式保存
      2. Unity自带的MonoDevelop和官方MonoDevelop的有区别的,不要升级MonoDevelop
    5. 实用函数:
      1. Application.LoadLevel()可以切换场景
    6. 资源管理:
      1. 文件打包用的是AssetBundle
      2. 所有通过Resources类加载的资源必须放在名为Resources的目录中
        1. All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via the Resources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
        2. 不同Resources目录同名目录加载规则无法预测!
      3. Reading Excel Files and Sheets into Unity,用的是直接COM读取excel的方式,没有参与资源管线
      4. Reading Text Data Into A Unity Game
      5. 所有需要通过散包方式加载的文件必须通过WWW的方式,加载后可自动识别movie、text、texture和bytes四种格式
      6. Unity3d 动态读取外部文件,包括对已封装好的内部资源的加载和外部散包资源的加载
      7. 在Unity3D的WebGame中实现资源动态加载
    7. 自带GUI:
      1. Used GUILayout.FlexibleSpace to center your automatic GUILayout
    8. 引用第三方库:
      1. Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加载Plugin时遇到的一些问题
      2. Plugins (Pro/Mobile-Only Feature)
    9. 团队工作:
      1. SO HOW DO TEAMS WORK ON A BIG UNITY3D PROJECT?
    10. 编译与发布:
      1. 定制Build流程: Build Player Pipeline
      2. Unity发布的exe是非托管的,但逻辑dll是放在GAME_Data\Managed下的,代码完全可以反编译
      3. 没发现Unity编译后的资源目录Game_Data中的文件结构和编辑器中的Project目录有明显的直接对应关系
      4. 编译后资源都被放到sharedassets*.assets这样的加密文件中,其中*可能是场景编号; Scene文件可能被放到了level*中
      5. Resources和其他目录不一样,其他目录编译完后会被自动打包合并,而Resources会有一个直接对应的resources.asset文件
      6. 相同的源反复编译生成的二进制不变
      7. 添加空场景后Game_Data/mainData发生改变
        1. prefab和各种资源关联啥的会自动处理的,只把用到的打包
      8. 编辑器中Import Package但没有真正使用不会对编译结果造成影响
      9. Game.exe始终是稳定不变的
    11. 版本管理:
      1. 即使采用了Force Text选项,ProjectSettings下很多asset文件也还是二进制格式的
    12. WebBrowser相关:
      1. WPF WebBrowser 与 Unity3D 交互操作
      2. 可通过Application.ExternalCall方法调用浏览器js方法
      3. WPF webBrowser 与 unity3d 交互操作
    13. 字体:
      1. Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size. @Unity 3.x Game Development by Exple Beginner's Guide[P201]
    14. 其他:
      1. Unity3D实用工具汇总
      2. Convert unity javascript (unityscript) to C#
      3. Unity3D屏幕截图
      4. Unity目前能在手机上做到的效果,其中shader开放可免费使用
      5. 采用双色半圆拼接饼状图是个技巧
        Image[1]
      6. Unity问题集(不断更新中)
    15. Unity中写C#脚本要注意的问题(仅限于MonoBehaviour子类)
      1. Inherit from MonoBehaviour
      2. Use the Awake or Start function to do initialisation
      3. The class name must match the file name
      4. Coroutines have a different syntax in C#
        1. Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
      5. Don't use namespaces
      6. Only member variables are serialized and are shown in the Inspector
      7. Avoid using the constructor or variable initializers
        1. Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
    16. AssertBundle
      1. Unity bundle的制作和使用
      2. Build asset bundle .unity3d
    17. Editor扩展脚本:
      1. Editor脚本是可以用C#写的,编译完后重启Unity生效
      2. 不要在Editor脚本中采用中文菜单,有一定可能down机
      3. 如果乱码,需要将文件保存为UTF8格式
    18. 压缩方式用的是lzma
    19. Unity的动态下载关卡与动态下载资源
    20. Unity3D命令行Build,这个对版本制作有用
    21. 版本控制:
      1. Unity3d版本控制,哪些文件该放到svn的问题解决
      2. Unity目前的版本已经把需要svn控制的文件单独归类放到Project Settings里了,现在只需要将Assets和ProjectSettings两目录加入svn即可 @Using External Version Control Systems with Unity
      3. 必须进行以下设置才可将项目加入到svn管理:
        Image(1)Image(2)
      4. meta文件为Unity内部使用,不要手工更改,也必须加入svn
        1. Unity内部是用GUID做文件间引用的
      5. Force Text可以将场景文件序列化为文本,以利于版本控制,默认为二进制
        1. Unity资源序列化采用的是YAML
    22. 场景加载进度条
    23. 关于Unity3D的协程(Coroutine)
    24. NGUI:
      1. Unity3D强大的UI插件(NGUI)
      2. NGUI: Documentation
      3. 中文教程: Unity界面插件NGUI基础教程Unity 3D 学习笔记 - 秒大刀 - 秒大刀 博客
      4. 中文教程: Unity界面插件NGUI核心组件说明
      5. 相同Depth的控件会存在z排序不稳定问题!复杂界面要进行合理的规划
    25. Unity内建Package简要说明
    26. Unity引用第三方dll随便拖到项目任何目录就可以了
    27. 所引用的托管dll必须是net3.5版本以下的(包括)
    28. 如果托管dll依赖非托管dll,则pc standalone版本的可行,web版的有安全限制,移动版也不可行,甚至System.IO名字空间都是受限的
    29. protobuf
      1. protobuf-net要采用net20版本的,不要用mono版的,据说有坑
      2. protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
    30. 微端构造AssetBundle的时候不加BuildAssetBundleOptions.DeterministicAssetBundle选项,两次出来的md5码就不一样
    31. System.Diagnostics.Debug.Assert无法在Unity中使用
      1. Debugging context in Unity3D
      2. Platform Dependent Compilation
    32. 将扩充代码放到单独目录中用VS开发,这样就可以加UnitTest了
    33. Debug.Log运行时会将日志输出去到Data目录下的output_log.txt文件(UTF8),省的自己写日志文件了
    34. 不要打开GAME.sln,而要打开GAME-csharp.sln,可同时由MonoDevelop和VisualStudio编辑
    35. 调整项目Build Settings后,则可在MonoDevelop/Run/Attach to Process窗口中找到正在运行的游戏以进行attach调试
      Image(3)
    36. protobuf编解码在Unity Editor中运行正常,但单独部署运行抛出TypeInitializationException的问题
      1. 如果发现Unity Editor中运行正常而单独运行时不正常,可以考虑将Api Compatibility Level改为.NET 2.0而不是其Subset
        Image(4)
    37. Terrain:
      1. Hightmap Resolution会比Terrain Resolution大1
      2. 移动平台小地形最好用模型,或者将Unity自带的Terrain用插件导出为模型,省性能。Unity Terrain依赖shader 2.0,某些手机不支持,即使导出地图也依赖shader 2.0,自己做地形模型一张贴图即可搞定
      3. Skybox的设置在Edit/RenderSettings/Skybox Material下,确保Game Overlay按钮选中才可以显示出来
        Image(5)
      4. 要第三人称在场景中漫游,需要将First Person Controller加入到场景
      5. Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
        Image(6)?
    38. 支持RPC,整合了RakNet,支持P2P,还提供了房间服务器和NAT穿透服务器,搞不定还有代理服务器。开房间娱乐性质的游戏不用写服务器逻辑
    39. Anything that uses Rigidbodies or realistic movement should use FixedUpdate, but instead of Update for every frame.
    40. Unity-4.0.1f2尚不支持Win8-Metro/WinPhone的导出
      Image(7)
    41. 使用Unity进行Web MMO游戏开发技术研究 @张昆 2010-5-5
      1. 动态下载和加载资源:
        1. Web MMO需要尽量减少首次下载量,并能在游戏运行中动态加载资源
        2. 游戏运行时资源下载和加载,Unity Pro支持两种方法: 资源包和资源目录。非Pro版本智能使用资源目录方法。一个资源包是一个外部的资源集合,游戏中可以使用多个资源包,资源包是在发行版本以外存在的。资源目录是一些资源的集合,资源目录被包含在发行版本里面,但是并没有和任何游戏对象有关联。资源目录通过Edit->Project Settings->Player的First Streamed Level With Resource来设定
      2. 对Web MMO产品的建议
        1. 主要是资源大小的考虑,资源中,贴图是大头,需要尽量减少贴图使用量。卡通类游戏比较适合
        2. 由于动态下载和加载资源会一直存在,玩家角色在场景中的移动速度不宜过大,大场景不宜频繁切换。资源动态下载需要占用玩家一定网络带宽
      3. 使用Unity的准备工作:
        1. Unity毕竟是一款包含内容和功能很多的游戏引擎。需要花一些时间熟悉其编辑器、代码和开发环境、资源生产流程等主要功能。不建议项目开始前没有一定的准备期
    42. Unity3D学习笔记,非常给力的一组学习笔记
      1. unity的主要使用者是关卡策划和程序员
      2. 目前Unity对中文的支持不是很好,因此在Unity中尽量不要使用中文,防止出现各种各样莫名其妙的异常
      3. 如何调整太阳光方向和天空盒太阳贴图方向一致?
        1. 首先在设计视图中拖动视角,让镜头中心对准天空盒上的太阳
        2. 然后在渲染设置中临时将天空盒设置为无(为了方便调整Sun的角度,否则天空盒太亮看不清楚)
        3. 然后选中Sun并使用旋转工具(快捷键E),将光线的方向正对自己
        4. 然后再将天空盒恢复即可
          Image(8)
      4. 一个好的游戏没有好的配乐和音效,就好像无暇的水晶缺少了灯光的陪衬。而音乐不仅能渲染出玩家攻略游戏时的氛围,还能增加提高玩家对游戏的认知度 @音乐和音效
      5. 所有Prefab实例的属性都引用自Prefab的预设,当预设属性改变时,对应的实例属性也会相应改变。但当实例的某个属性被手工调整后,即使修改预设的属性值,该值也会以手工调整的值为准
      6. 随着360和Unity的合作,前者的360安全浏览器预装Unity3d的方案实施会给Unity进军中国市场带来可观的便捷
      7. Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
      8. NGUI制作小地图
    43. Directional light的Shadow Type:
      1. No Shadows
        Image(9)
      2. Hard Shadow - 影子的轮廓比较清晰
        Image(10)
      3. Soft Shadow - 影子边缘模糊一点,更加逼真
        Image(11)
    44. 粒子系统:
      1. Particle Emitter: 只管发射粒子
      2. Particle Animator: 粒子动画器,负责对发射器产生的粒子进行二次加工,比如使粒子的颜色不断的变化,缩放粒子等
      3. Particle Renderer: 粒子渲染器,负责将粒子渲染到游戏中,并且可以决定粒子的材质、光影等
    45. 当选中Prefab的实例时,检视面板上就会显示预制对象菜单:
      1. Select:在工程面板中快速选取该实例引用的预制
      2. Revert:将实例修改过的参数全部还原为预制的参数
      3. Apply:将实例修改过的参数全部应用到预制,此时所有引用此预制的实例会一起受到影响而变动
    46. yield用法:
      1. Unity3D使用C#实现Coroutines & Yield
        1. 所有使用yield的函数必须返回IEnumerator类型(这点和C# IEnumerable标准用法有差异!)
        2. 所有IEnumerator类型函数必须使用”StartCoroutine”这个函数触发,不能单独使用
      2. How do I use Yield in C#?
      3. Overview: Coroutines & Yield
      4. MonoBehaviour.StartCoroutine
    47. 不同颜色的字体需要创建不同的Materials, 其贴图设置为字体贴图, Shader要采用GUI/TextShader
      Image(12)
    48. Unity手册非官方翻译版
    49. Convert unity javascript (unityscript) to C#
    50. 只有public field才可进入Inspector窗口, 该功能可用[NonSerialized]特性屏蔽
      1. 和Inspector窗口关联的public field重命名后Inspector中编辑的值会丢失!
      2. Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
      3. public property不会进入Instactor
      4. enum在Inspector中会自动展示为ComboBox
    51. 动态调用, 解耦神器:
      1. 可通过SendMessage方法进行动态方法调用!
      2. 可采用Find/FindWithTag方法, 用字符串名称的方式直接查找GameObject对象
    52. 将Prefab直接拖入场景可进行查看
    53. Where can i find the unityengine xml?, unity官方并未提供引擎dll对应的xml文档, 这对VisualStudio下的自动提示不友好
    54. WCF & Unity
      1. Service References的代码可用VisualStudio自带的“添加服务引用”功能,没必要非命令行用mono的svcutil。成功生成后需要将对应的C#代码文件拷贝到Assert下合适的目录中,否则不会参加编译
      2. 需要从C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷贝到*\Assets\Plugins下的dll有:
        1. System.Runtime.Serialization.dll
        2. System.Security.dll
        3. System.ServiceModel.dll
        4. System.IdentityModel.Selectors.dll // 该文件也是必要的,否则System.ServiceModel.dll不会被正确引入
      3. Consuming a WCF Service from Unity3D
      4. Is it possible to use WCF in scripts?
      5. Webservices In Unity
      6. Unity中使用WCF服务小教程
    55. Unity会自动生成的两种项目文件,*-csharp.sln/*-vs.csproj或*.sln/*.csproj,前者是供VS用的,后者是供MonoDevelop用的,包含了自定义的项目类型*.unityproj
    56. 不要手工向*-csharp.sln中加入任何project,这会在Unity重新生成后覆盖。可将sln另存为得以解决
    57. NGUI
      1. Unity界面插件NGUI基础教程
      2. Unity界面插件NGUI核心组件说明
      3. NGUI: Documentation
        1. 译文: Unity3d 界面插件NGUI
      4. 调整NGUI“米老鼠”大小:
        Image(15) Image(16)Image(17)
    58. TexturePacker is a gui and command line tool to create sprite sheets or sprite atlases
      1. Request free license
      2. Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,还可方便自定义输出格式
    59. unity双开:
      Image(13)Image(14)
    60. 暂没有内嵌浏览器的支持Embed Web Browser into unity
    61. The New GUI,将会在随后的unity新版中得到支持
    62. bitverse GUI库,在移动平台会遇到性能问题,但开发效率要比NGUI高
    63. Unity脚本周期关系
    64. 原文地址:http://dearymz.blog.163.com/blog/static/20565742013341916919/
    展开全文
  • Unity学习笔记Unity 3D 飞机大战 1、打开unity软件后,首先新建Quad作为背景,导入飞机模型,并为其添加刚体 然后创建C#脚本,挂载到飞机上。 2、给飞机创建子弹,让子弹成为预制体,同样创建C#脚本 3、创建陨石和...

    Unity学习笔记:Unity 3D 飞机大战

    1、打开unity软件后,首先新建Quad作为背景,导入飞机模型,并为其添加刚体
    然后创建C#脚本,挂载到飞机上。
    2、给飞机创建子弹,让子弹成为预制体,同样创建C#脚本
    3、创建陨石和敌机作为敌方,飞机发射子弹使其销毁,如果飞机与敌方相撞,则飞机爆炸消失。

    放上完成后的图:
    在这里插入图片描述
    给飞机设置的组件:
    alt
    子弹的组件:
    在这里插入图片描述
    陨石的组件:
    在这里插入图片描述
    敌机和其子弹的组件与飞机类似,就不放图了~

    接下来是代码:
    1、飞机脚本

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    
    /** 玩家飞机飞行的脚本 */
    public class PlayerMovement : MonoBehaviour
    {
        /** 飞机可以飞行的区域 */
        public float xMax;
        public float xMin;
        public float zMax;
        public float zMin;
    
        /** 飞机自身的刚体 以及 飞机发射子弹的位置 */
        Rigidbody _plane_rig;           
        Transform _plane_fire_point;
    
        /** 子弹的预制体 */
        GameObject _bullet;
    
        private void Awake()
        {
            //获取刚体
            _plane_rig = this.GetComponent<Rigidbody>();
            //获取开火位置
            _plane_fire_point = transform.GetChild(1);
            //获取子弹的预制体
            //通过资源加载的方式获取预制体
            _bullet = Resources.Load("Prefabs/Bullet") as GameObject;
        }
    
        private void FixedUpdate()
        {
            float h = Input.GetAxis("Horizontal");
            float v = Input.GetAxis("Vertical");
            //飞机移动
            Move(h, v);
            //飞机开火
            Shoot();
        }
    
        /** 飞机的飞行速度 以及飞机的倾斜度 */
        public float plane_speed = 3f;
        public float plane_Tilt = 2f;
        void Move(float h,float v)
        {
            //1.获取飞机移动的方向
            Vector3 plane_fly_dir = new Vector3(h, 0, v);
            //2.设定飞机的飞行速度
            _plane_rig.velocity = plane_fly_dir * plane_speed;
            //3.移动
            _plane_rig.position = new Vector3
                (
                    //Mathf.Clamp(x,y,z)的作用是将x限定在y和z之间
                    Mathf.Clamp(_plane_rig.position.x,xMin,xMax),
                    5f,
                    Mathf.Clamp(_plane_rig.position.z,zMin,zMax)
                );
            //4.设置飞机倾斜度
            _plane_rig.rotation = Quaternion.Euler(0f, 0f, _plane_rig.velocity.x * -plane_Tilt);
        }
    
    
        float _shoot_rate = 0.5f;
        float _timer = 0f;
        void Shoot()
        {
            //计时
            _timer += Time.deltaTime;
            //按下鼠标左键
            if (Input.GetMouseButton(0) && _timer >= _shoot_rate)
            {
                //在_plane_fire_point.position的位置生成_bullet实例,保持_plane_fire_point.rotation的旋转
                Instantiate(_bullet, _plane_fire_point.position, _plane_fire_point.rotation);
                //重置定时器
                _timer = 0f;
            }
        }
    }
    

    2、子弹的脚本

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class BulletMovement : MonoBehaviour
    {
        /** 子弹的飞行速度 */
        public float bullet_speed = 20f;
    
        private void FixedUpdate()
        {
            this.GetComponent<Rigidbody>().velocity = bullet_speed * transform.forward;
        }
    }
    

    3、陨石的脚本

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class AsteroidMove : MonoBehaviour
    {
        //陨石的移动速度集合
        float[] _asteroid_speeds = { 8, 10, 13, 16 };
    
        private void Awake()
        {
            //左闭右开 [0,4)
            int index = Random.Range(0, _asteroid_speeds.Length);
    
            this.GetComponent<Rigidbody>().velocity = Vector3.back * _asteroid_speeds[index];
        }
    
    }
    

    陨石旋转

     //陨石旋转的速率集合
        float[] rotRations = { 4f, 6f, 8f };
    
        private void Awake()
        {
            int index = Random.Range(0, rotRations.Length);
    
            //Random.insideUnitSphere 随机返回球体(半径为1的球体)内部的任意一点
            this.GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * rotRations[index];
        }
    
    

    陨石爆炸

    /** 爆炸效果预制体 */
        public GameObject asteroidExp;
        public GameObject playerExp;
    
        private void OnTriggerEnter(Collider other)
        {
            //碰到陨石或者是敌方飞机 不处理直接返回
            if (other.gameObject.tag == "Asteroid" || other.gameObject.tag == "Enemy" || other.gameObject.tag == "EBullet")
                return;
    
            //碰到了子弹
            if(other.gameObject.tag == "Bullet")
            {
                //生成爆炸体
                GameObject exp = Instantiate(asteroidExp, transform.position, transform.rotation);
                //销毁
                Destroy(exp, 0.3f);
            }
    
            //碰到了玩家
            if(other.gameObject.tag == "Player")
            {
                //生成爆炸体
                GameObject exp = Instantiate(playerExp, transform.position, transform.rotation);
                //销毁
                Destroy(exp, 0.3f);
            }
    
            //销毁碰到的物体
            Destroy(other.gameObject);
            //销毁自身
            Destroy(transform.gameObject);
    
        }
    
    

    以及陨石的管理

     /** 三个陨石预制体 */
        GameObject _Asteroid_01;
        GameObject _Asteroid_02;
        GameObject _Asteroid_03;
    
        /** 存放所有的陨石 */
        List<GameObject> _Asteroids;
    
        private void Awake()
        {
            //初始化陨石集合
            _Asteroids = new List<GameObject>();
    
            //通过资源加载的方式先获取到三个陨石
            _Asteroid_01 = Resources.Load("Prefabs/Asteroid_01") as GameObject;
            _Asteroid_02 = Resources.Load("Prefabs/Asteroid_02") as GameObject;
            _Asteroid_03 = Resources.Load("Prefabs/Asteroid_03") as GameObject;
    
            //将三个陨石加入到集合中
            _Asteroids.Add(_Asteroid_01);
            _Asteroids.Add(_Asteroid_02);
            _Asteroids.Add(_Asteroid_03);
        }
    
        private void Start()
        {
            //重复调用某一个方法
            InvokeRepeating("CreateAsteroid", 0f, 3f);
        }
    
        void CreateAsteroid()
        {
            //1.随机从集合中取出陨石
            GameObject asteroid = _Asteroids[Random.Range(0, _Asteroids.Count)];
            //2.创建随机位置
            Vector3 asteroidPos = 
                new Vector3(Random.Range(transform.position.x, -transform.position.x), 5f, 17.52f);
            //3.创建陨石
            Instantiate(asteroid, asteroidPos, Quaternion.identity);
        }
    
        private void OnApplicationQuit()
        {
            //当程序结束的时候取消invoke的重复调用
            CancelInvoke("CreateAsteroid");
        }
    
    

    4、最后是敌机和其子弹

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class EnemyShip : MonoBehaviour {
    
        //敌机的移动速度集合
        float _enemy_speeds = 3f;
        Transform _eplane_fire;
    
        /** 敌机子弹的预制体 */
        GameObject _ebullet;
    
        private void Awake()
        {
            //左闭右开 [0,4)
            this.GetComponent<Rigidbody>().velocity = Vector3.back * _enemy_speeds;
            transform.eulerAngles = new Vector3(transform.eulerAngles.x, 180, transform.eulerAngles.z);
    
            //获取开火位置
            _eplane_fire = transform.GetChild(1);
            //获取子弹的预制体
            //通过资源加载的方式获取预制体
            _ebullet = Resources.Load("Prefabs/EBullet") as GameObject;
    
        }
    
        private void FixedUpdate()
        {
            //敌机开火
            Shoot();
        }
    
        float _shoot_rate = 2f;
        float _timer = 0f;
        void Shoot()
        {
            //计时
            _timer += Time.deltaTime;
            if (_timer >= _shoot_rate)
            {
                //在_plane_fire_point.position的位置生成_bullet实例,保持_plane_fire_point.rotation的旋转
                Instantiate(_ebullet, _eplane_fire.position, Quaternion.identity);
                //重置定时器
                _timer = 0f;
            }
        }
    }
    

    (敌机的爆炸及其子弹的爆炸和陨石爆炸代码类似,下面就不放了)


    5、最后的最后(终于要完成了~)给敌机设置管理

    /** 敌机 */
        GameObject _enemys;
    
        private void Awake()
        {
            //通过资源加载的方式先获取到敌机
            _enemys = Resources.Load("Prefabs/EnemyShip") as GameObject;
        }
    
        private void Start()
        {
            //重复调用某一个方法
            InvokeRepeating("CreateEnemy", 0f, 3f);
        }
    
        void CreateEnemy()
        {
            
            //1.创建随机位置
            Vector3 enemyPos =
                new Vector3(Random.Range(transform.position.x, -transform.position.x), 5f, 17.52f);
            //2.创建陨石
            Instantiate(_enemys, enemyPos, Quaternion.identity);
        }
    
        private void OnApplicationQuit()
        {
            //当程序结束的时候取消invoke的重复调用
            CancelInvoke("CreateEnemy");
        }
    

    撒花!!!一个飞机大战小游戏就完成了,用 unity 做这款小游戏有些大材小用,却也的确比用 h5 简单很多!

    展开全文
  • Unity3d心得体会

    2014-12-16 20:20:34
    不知不觉来狗刨学习网参加unity3d培训已经有将近一个月了,回顾这一个月既忙碌又充实的生活,再想一下在学校当初的日子不禁感慨良多。来到这里之后才发现当初在学校里浪费了不少的光阴,没有好好的学习知识充实自己...

    不知不觉来狗刨学习网参加unity3d培训已经有将近一个月了,回顾这一个月既忙碌又充实的生活,再想一下在学校当初的日子不禁感慨良多。来到这里之后才发现当初在学校里浪费了不少的光阴,没有好好的学习知识充实自己。

     

    来到北京之后的每一天都非常的充实,每晚睡前都感觉这一天学到了不少实在的东西,没有浪费这一天的时光。

     

    当初在学校的时候虽不说多么的颓废,但在学习方面也没有多么的积极,所以我在学校的成绩并不是很好,直到两个月前学校为我们加了unity3d这门课程,当我了解了unity3d这个软件时我就喜欢上了这门课程,于是就报名参加了unity3d的培训课程,Unity3d是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动想学C#的可以点击:http://www.gopedu.com/course/45画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。它制作的游戏可以发布在十几个平台运行。

     

    来到这里之后感觉和在学校有很大的差异,首先是学习的气氛,这里的同学们都很勤奋,每天晚上都要学习到将近12点才会寝室睡觉,在这种气氛之下我学习的也更加的努力,争取不要被其他的同学落下。然后老师上课讲的非常仔细,我们遇到问题是随时可以去问,老师也会为我们讲解的非常透彻。我们20个人自由分组分成了5个小组,每个小组4个人,每个小组互相竞争,更加强了我们学习的动力。

     

        接下来说一下我们充实丰富的一天,

     

    (我们寝室)(早上的楼道)

                                              

    我们上午上课的时间是九点,每天早上我七点半起床洗漱收拾一下,八点就来到教室复习一下昨天学习的知识,再预习一下今天老师要讲的东西。虽然离上课还有一个小时,但班里已经有几个起得早的在学习了。

           

    等到了九点的时候同学们都陆陆续续的来了就正式上课,每天上课第一件事就是在每组随机抽取一个人走到教室的中央去将昨天学到的东西都讲一遍,目的是为了锻炼我们沟通的能力。

     

    等到了十二点半有两个小时来让我们吃饭和午休,学院的地理位置很好楼下有超市。而且北京作为生活型大都市,走出马路你可以看到园区外整排整排的餐饮店。

    (午休刻苦学习中)

    在午休时间也有同学在刻苦的学习,回顾上午学习的内容,记记笔记。

     (晚自习中)              

    到了晚上,完成老师留的任务之后,遇到不会的问题可以小组一起讨论一天学习的知识点,回顾和表达自己自己的知识,遇到难点时也可以问老师,老师会陪你奋战到9点。

    (讨论,老师在给几个同学开小灶) 

    晚自习是开放的,现在所有的同学是最早是10点后才会离开。当然,提升无极限,有的同学是学到12点以后才会回去。

     

    要想有更多了解请加入我们的群:284757726,本人愿意和你一起讨论交流,共同进步。

     

     

    展开全文
  • [Unity 3D] 物理引擎学习笔记(一) [Unity 3D] 物理引擎学习笔记(一) 分类: Unity 3D2012-02-06 22:59 1077人阅读 评论(0) 收藏 举报 目录(?)[+] 刚体:  同是物理引擎...
  • 换装系统 游戏中英雄的形象由头部,身体,四肢组成,每个部位可以佩戴不同的饰品,比如发型,头饰,武器,衣服,翅膀等。这些饰品需要支持替换,卸载。 我们来单独看一个部件-武器 唯一的组件是...
  • 随心的笔记项目建立项目确立明确目标构思结构下架子架子感悟自己的架子笔记制作小东西大东西笔记总结 项目建立 在u3d里面建立项目非常简单,hub点击新建,很人性化. 项目确立 没有方向就像没有瞄准镜的枪,你到底要打啥...
  • 在此记录,以防遗忘。在尝试独立制作坦克大战时遇到了一些意想不到的问题,现做一下汇总。 一、Mesh Colider下的Convex选项 ...参考百度知道(Unity3d 中MeshCollider组件下Convex勾选有什么用?) 二...
  • 自学Unity3D,本来想和之前的博客一样,完成全部代码再写心得,可是那样很慢,而且学习过程中我很少记笔记,导致最终代码出来的时候没有太多可以摆上台面的,所以我打算尝试把开发过程也展示一下。 之前我也在看...
  • 一、新建工程 二、创建Audio、Prefabs、Scenes、Scripts、Sprites文件夹。 三、导入图片素材到Sprites文件夹、音频素材到Audio文件夹。 1、修改图片属性为Texture Type:Sprite(2D and UI),分辨率:100 ...
  • unity心得体会

    2014-12-16 20:12:49
    我们到这来已经有差不多一个月了,当你到一个新的环境的时候或许刚开始的时候会很不适应,因为人刚来一个环境的时候最大的还是陌生,我感觉每天在这很充实,老师都很负责,我们这个班级的学习热情也很高涨,不懂就问...
  • 我用Unity3D的版本是 5.13。 游戏蛮牛提供的资源包下载已经失效了。不过可以通过官方商店下载。 打开UnityEditor。选择Window->Asset Store-> 然后搜索Space Shooter 然后点击下载即可。 下载完成后,一切...
  • 毕业设计的题目是开发一个基于Unity3d的推箱子游戏。用Unity3d做推箱子游戏 个人觉得还比较简单,我用到了C# PHP  MySql技术。游戏是做成手机游戏的,用到了unity的NGUI插件。游戏截图: 如果有需要的QQ联系我:...
  • unity3d shader 学习笔记

    2015-05-28 20:14:49
    unity中我们经常会使用shader,但是从来没有深究过,最近在做项目时遇到相关问题,无从下手,决定系统学习一番,在此前提下把我学习的过程做一个记录。学习过程中参考了浅墨和风宇冲两位高人的博客,本文有不对的...
  • 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础。牛顿有句话我很喜欢:“如果说我看得比较远的话,那是因为我站在巨人的肩膀上。...
  • Unity 3D 学习笔记

    2014-08-20 16:02:05
    编辑器: Hierarchy窗口中是场景中的Game Object列表Project窗口中是磁盘上Assets文件夹中的内容,可用来创建Game Object 调试: ...因Unity采用的是Mono运行时引擎而不是CLR,参考Debugging usi
  • 在开始设计游戏之前我们需要先重新...我把工程建建立在E:\Frederick\Unity3D\UnityFundStudy1,注意目前Unity对中文的支持不是很好,因此在 Unity中尽量不要使用中文,防止出现各种各样莫名其妙的异常。点击确认创建,
  • Unity 3D入门简介

    2019-07-07 15:07:29
    最近在刚开始学习Unity 3D,在这里记录一下学习心得学习笔记,边学边写,可能会比较零散。好了,废话不多说,今天从Unity 3D入门写起,主要简要介绍一下Unity 3D的和一些学习资料。以下如果不作特别说明,均是指...
  • 学习Unity3d也有一段时间了,现在分享下用Unity实现《经典贪吃蛇》游戏的一些心得,希望对爱好游戏开发的朋友们有所帮助。(也希望大佬们指点) 相信大家都玩过经典的贪吃蛇,在这里我就不写经典贪吃蛇实现的具体...
1 2 3 4 5 ... 11
收藏数 218
精华内容 87