unity3d 入门[通俗易懂]

unity3d 入门[通俗易懂]unity关联vsunity安装cinemachineassetstore搜索cinemachine插件,import后确认导入后,可以在packages节点(library/packagecache中代码)找到Cinemachine如果报错(确保没有io错误):Windows>PackageManager>inproject依赖项,删除后,重新安装IO错误…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

unity关联vs

在这里插入图片描述
vscode直接加载文件夹,不要使用unity右键打开项目,unity2019bug导致vscode打开后没有界面,后才占用项目,不能右键打开。

找不到ms-vscode.csharp依赖

unity插件版本太老,可以修改extension目录中的package.json依赖

.vscode\extensions\unity.unity-debug-2.7.2

查看c#版本名称
在这里插入图片描述
修改package.json
在这里插入图片描述

vscode安装vscode-solution-explorer管理项目

在这里插入图片描述

unity安装cinemachine

asset store搜索cinemachine插件,import后确认导入后,可以在packages节点(library/packagecache中代码)找到

Cinemachine如果报错(确保没有io错误):
Windows > Package Manager > in project依赖项,删除后,重新安装
在这里插入图片描述
unity内部错误,编译不通过,删除assets中自动生成的cinemachine文件夹,重新安装package manager中的包(之前是app store中的生成错误了,不删除不会刷新代码)
菜单栏出现cinemachie才能算成功
在这里插入图片描述

IO错误

在这里插入图片描述
权限问题,换个文件夹(c盘权限问题)

异常捕获

在这里插入图片描述
vscode设置常用的nullReference异常,可以在资源为空的地方停止运行

package

unity运行错误,提示文件asmdef文件找不到
在package中搜索,找到后双击导入

asmdef文件:文件的方式定义程序集,package右键文件夹import(源码在\library\PackageCache下,生成的程序集在\library\ScriptAssemblies下),unity中的adf资源
unity中菜单:Assets > Create > Assembly Definition创建(可以提高编译效率)
在这里插入图片描述
name即项目名称,references依赖项
在这里插入图片描述

package compile error

选择package下文件夹,右键reimport

导入成功packages文件夹下,可以找到:
在这里插入图片描述

设置vscode调试

在这里插入图片描述
项目不要通过unity右键的方式打开,可找到文件夹打开
添加日志:Debug.LogError,Unity及时编译,unity > console点击后,出现错误自动暂停
在这里插入图片描述

the reference script on this behaviour missing.删除脚本组件后,重新拖动脚本到节点上

组件引用搜索

节点列表里面搜索,t:名称
tag:每个节点可以绑定标签,一个标签对应多个节点。layer(勾选后显示层)
static:静止物体不可以tansform移动,渲染特殊处理

Copying assembly from ‘Temp/Assembly-CSharp.dll’ fail

project栏下packages/textmesh pro,右击reimport

ui穿透

protected virtual bool IsClickUI()
    {
        if (EventSystem.current!=null)
        {
            PointerEventData eventData = new PointerEventData(EventSystem.current);
            eventData.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
            List<RaycastResult> results = new List<RaycastResult>();
            EventSystem.current.RaycastAll(eventData, results);
            return results.Count > 0;
        }
        return false;
    }

unity插件编辑模型

三大神器ProBuilder、Polybrush、ProGrids

对象查找

  • UnityEngine.Object.FindObjectsOfType搜索节点
  • GameObject.Find通过名字查找
  • GameObject.GetComponent查找同一对象的组件
  • Resources.Load资源加载(assets\resources目录中,相对路径)
  • Resources.GetBuiltinResource内部资源加载
  • AssetBundle.Load加载Assetbundle资源

render对象有layer属性,设置显示层级和节点的层级不同

动画

骨骼动画、关节动画、关键帧动画

  • Animation:关键帧设置,可以设置对象的所有组件动画
  • Animator:由Animation组成,不同的状态包含不同的Animation(animation编辑器在节点中打开才能编辑,场景中可以预览)

动画之间通过transition转换(转换控制时间轴),通过参数判断状态转换

  • TimeLine:时间轴,多元素

元素

  • 节点,Gameobject,使用transform属性可以设置子节点
  • TileMap绘制图层,通过tile palette绘制
  • prefab对象集(gameobject嵌套),prefab可以点击去单独编辑的集合,gameobject拖到文件夹中自动生成预制件

参考:https://www.jianshu.com/p/283752d80737

  • Assetbundle压缩打包资源,支持热更新
  • cs脚本,脚本pulic成员unity editor component可见
  • GUI,通过unity的Ongui事件函数
  • UGUI,canvas元素上拖放的gui
  • UWidget,unity插件封装了flutter高效的app开发模式

unity界面OnGUI、NGUI下载插件、UGUI 自带

assembly definition

打包脚本到dll,减少代码修改后的项目编译时间

资源

  • resource,
  • asset(AssetDatabase.LoadAllAssetsAtPath展开文件的所有object,AssetDatabase.LoadAssetAtPath打开特定对象)
  • assetbundle,edit中管理asset资源

参考:https://blog.csdn.net/u014230923/article/details/51433455
https://www.jianshu.com/p/2e5b1b14c276

组件事件函数

  • 加载第一个场景
    Awake
  • 第一帧更新之前
    Start
  • 插值帧
    OnApplicationPause
  • 更新顺序
    FixedUpdate、Update、LateUpdate游戏交互、动画和相机位置等操作
  • 渲染
    OnRenderObject、OnPreCull、OnBecameVisible
  • 协同程序
    yield
  • 对象 (Object) 被销毁时
    OnDestroy

参考:file:///D:/Program%20Files/Unity3d/2018.4.13f1/Editor/Data/Documentation/en/ScriptReference/MonoBehaviour.html

协程设计

unity中为了增加稳定性,使用协程实现异步(应用层级别的线程控制)
StartCoroutine、StopCoroutine(以函数名开启的协程)、StopAllCoroutines
协程需要主动关闭
yield return相当于阻塞等待,yield break终止协程(内部退出)

协程的调用和帧率相关

射线检测

Physics.Raycast

插件

Editor,MenuItem等属性设置插件的显示方式
Script/Editor目录下的文件,自动添加到插件项目中

ab打包,resource目录是默认的ab包,inspector中new assetbundle,相同的名称在同一个包中

[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
    string assetBundleDirectory = "Assets/AssetBundles";
    if (!Directory.Exists(assetBundleDirectory)) Directory.CreateDirectory(assetBundleDirectory);
    BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}

fbx

3d模型fbx,包含动画,在unity中分解为animation、resource、material、texture绑定到gameobject中使用

GUI

RectTransform组件:
锚点(透明三角):四个三角符号到窗口四个角距离固定,三角符号可以在一个点上
轴点(空心小圆圈):旋转的中心
strech模式下长宽高无法获取,

gui顶点创建的ui、guilayout自动创建
button事件绑定:添加EventTrigger组件、射线检测、button绑定button对象和函数

排版,多个控件选中后设置大小,和整体大小拖动可以控制间距
Gizmos:选中效果设置可扩展,相机选中效果显示区域
相机叠加:相机的depth only模式和don’t clear模式配置depth顺序配置渲染先后顺序,depth小的先渲染

脚本OnGUI只能创建,操作在Update中进行

打包

UnityEditor不能在打包项目中使用,否则无法打包
Unity中使用System.IO中的DirectoryInfo打包会找不到路径

android目录

application.datapath unity的资源目录,权限导致写入数据容易失败
temporaryCachePath 系统临时缓存目录

unity3d播放卡死

vs tool>setting>实时>全部勾选
或者建议使用vscode

场景间传递数据

SceneManager.LoadScene //场景名称或者build setting中的编号

  • start函数中GameObject.DontDestroyOnLoad(gameObject); //设置场景切换不销毁的对象
  • PlayerPrefs.SetFloat、getfloat保存数据
  • 静态成员变量

目录结构

特殊目录:Eidtor\Resource

参考:https://blog.csdn.net/u013628121/article/details/53377372

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169328.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ViewPager 详解(二)—详解四大函数

    ViewPager 详解(二)—详解四大函数前言:上篇中我们讲解了如何快速实现了一个滑动页面,但问题在于,PageAdapter必须要重写的四个函数,它们都各有什么意义,在上节的函数内部为什么要这么实现,下面我们就结合android的API说明,详细讲解一下。相关文章:1、《ViewPager详解(一)—基本入门》2、《ViewPager详解(二)—详解四大函数》3、《ViewPager详解(三)-…

  • 初识CDN加速

    初识CDN加速

  • statement 、prepareStatement的用法和解释「建议收藏」

    statement 、prepareStatement的用法和解释「建议收藏」转自:http://blog.csdn.net/QH_JAVA/article/details/48245945一、prepareStatement的用法和解释1.PreparedStatement是预编译的,对于批量处理可以大大提高效率.也叫JDBC存储过程…

  • 数据结构中的elemtype、elem是什么

    数据结构中的elemtype、elem是什么ElemType是数据结构的书上为了说明问题而用的一个词。它是elementtype(“元素的类型”)的简化体。 因为数据结构是讨论抽象的数据结构和算法的,一种结构中元素的类型不一定是整型、字符型、浮点型或者用户自定义类型,为了不重复说明,使用过程中用“elemtype”代表所有可能的数据类型,简单明了的概括了整体。在算法中,除特别说明外,规定ElemType的默认是int型。elem是单词…

  • 191. Number of 1 Bits Leetcode Python

    191. Number of 1 Bits Leetcode Python

  • python 字符串转成数字_python数字转十六进制字符串

    python 字符串转成数字_python数字转十六进制字符串在python列表操作中,面对需要把列表中的字符串转为礼拜的操作,无需强转,通过简单的几步就可以实现,本文介绍python中字符串转成数字的三种方法:1、使用join的方法;2、使用int函数将16进制字符串转化为10进制整数;3、使用列表生成式进行转换。方法一:使用join的方法num_list=[‘1′,’2′,’3’]str_list=”.join(num_str)#把列表中的元素连起来print(int(str_list))输出123方法二:使用int函数将16进制

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号