IOC容器
Spring IOC容器基本原理2.2.1 IOC容器的概念IOC容器是具有依赖注入功能的容器,负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,而是由IOC容器进行组装。在Spring中,BeanFactory是IOC容器的实际代表者。
Spring IOC容器通过读取配置文件中的配置元数据来管理对象。配置元数据可以通过XML文件、注解、基于Java文件的配置或基于属性文件的配置来定义。
2.2.2 Bean的概念由IOC容器管理的应用程序对象称为Bean。Bean是由Spring容器初始化、装配及管理的对象。IOC容器通过配置元数据(由BeanDefinition代表)来确定如何实例化Bean、管理Bean之间的依赖关系以及管理Bean。
2.2.3 开始Spring Hello World之旅1. 准备需要的jar包核心jar包:
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springfra ...
Unity Mulligan Renamer 使用教程
1. 项目介绍Unity Mulligan Renamer 是一个用于 Unity 编辑器的开源工具,旨在快速且安全地批量重命名多个资产或游戏对象。该工具提供了多种重命名方式,包括替换子字符串、添加前缀和后缀、添加数字以及删除字符等。通过这些功能,开发者可以高效地组织和管理项目中的资源。
2. 项目快速启动安装方法通过 Unity Asset Store 安装
打开 Unity Asset Store。
搜索并找到 Mulligan Renamer。
点击“添加到我的资源”并导入到你的项目中。
通过 GitHub 安装
在你的项目目录中,打开 Packages/manifest.json 文件。
添加以下依赖项:
12345{ "dependencies": { "com.redbluegames.mulligan": "https://github.com/redbluegames/unity-mulligan-renamer.git#upm" }}
保存文件并重新打开 ...
安卓打包流程
视频链接Unity 与 Android 、IOS (一) 打包与交互_哔哩哔哩_bilibili
基础 Bulid Setting安卓插件选择安卓的Platform并且下载unity的安卓插件
设置app基础
基础信息
Company Name
Product Name
Version
Default Icon
Icon
Resolution and Presentation 分辨率和显示
Orientation 和 Allowed Orientations for Auto Rotation
俩个用来选择是否自动旋转
Portrait 竖屏
Portrait Upside Down 竖屏
Landscape Right 横屏
Landscape Left 横屏
Preferences配置外部环境包External Tools
Unity防坑指南之Android路径缺失jdk、sdk和nd ...
帧同步和状态同步
前言
谈到网络游戏,不可避免要谈到现有两种比较常见的网游同步技术:帧同步和状态同步说到这两个名词,大家夸夸奇谈,都能讲上些许自己的见解,我反正啥也不懂这篇文章就打算着重学习一下这两种技术的基础和原理
网络同步的目标就是时刻保证多台机器的游戏表现完全一致。
网络同步 = 实时的多端数据同步+实时的多端表现
同步战斗逻辑是包括技能逻辑、普攻、属性、伤害、移动、AI、检测、碰撞等等的一系列内容,这常常也被视为游戏开发过程中最难的部分。
网络同步按大类来分有两种做法:状态同步和帧同步。需要强调的是这两个概念并不是简单的对立概念,其中的差异包括:”数据格式与内容”、“逻辑的计算位置”和“是否有权威服务器”等。
帧同步【LockStep】
LockStep的翻译是锁步同步,是齐步行军的意思
有明确的逻辑帧概念,按照固定的逻辑帧间隔同步数据
帧同步的战斗逻辑在客户端
在帧同步下,通信就比较简单了,服务端只转发操作,不做任何逻辑处理。
客户端按照一定的帧速率(理解为逻辑帧,而不是客户端的渲染帧)去上传当前的操作指令,服务端将操作指令广播给所有客户端,
当客户端收到指令后执行本地代码,如果输入的指 ...
Dotween笔记
Dotween是unity里非常常用的插件,但是很多人应该没有仔细的阅读过它的api,它实际有很多好用的方法,下面我就针对一些相对常用的方法,做下总结:
Dotween常用方法详解-CSDN博客
Transform拓展方法1) Position1)改变世界坐标移动方法,第一个参数是要移动到的目标点,不是移动这个向量的距离。
1transform.DOMove(new Vector3(1, 1, 1), 2);
只控制x轴上的移动,其他两个方向同理。
1transform.DOMoveX(1, 2);
2)改变局部坐标12transform.DOLocalMove(new Vector3(1, 1, 1), 2);transform.DOLocalMoveX(1, 2);
2) Rotation1)世界旋转旋转到给定的值,改变的是欧拉角。
1transform.DORotate(new Vector3(0, 90, 0), 2);
旋转到给定的值,改变的是四元数。
1transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0 ...
每日一题
不鸣 引擎一面
介绍项目经历
ECS的优势
ECS除了Cache以外的好处
配表相关工作
配表遇到的问题,还有什么可以完善(表间数据引用)
C++的sizeof受到哪些影响
空对象的sizeof
虚函数实现原理
析构函数的虚函数
虚函数何时呈现多态
讲讲share_ptr
share_ptr除了指针和引用计数器外还有什么成员
share_ptr是线程安全的吗
代码测试题目
实现一个成员变量赋值的函数
减少赋值过程的拷贝
反问
岗位是否涉及GamePlay:负责开发引擎的Runtime和插件,本岗位是开发配表插件的
4 二面
问实习项目
如何实现对象池的
都做了哪些配表工作
我提到的Luban插件是如何工作的
如何解决Map嵌套复杂数据类型的场景(然而官方手册上说不支持这个功能)
是否有多线程相关经验
share_ptr是线程安全的吗,为什么
代码测试
实现构造函数、拷贝构造、移动构造、拷贝赋值、移动赋值(注意自己赋值自己的情况)
测试这几个构造函数
解释一下Lua元表(因为简历上提过)
C++如何与Lua沟通的
xlua如何实现C#和Lua沟通的(因为提到了Unity的x ...
unity框架工具
本文介绍unity常用框架工具,可以类似于GF(GameFrame)给的工具集。
FSM
FSM是一种数据结构,它由以下几个部分组成:
内在的所有状态(必须是有限个)
输入条件
状态之间起到连接性作用的转换函数
FSM的描述性定义:一个有限状态机是一个设备,或是一个模型,具有有限数量的状态。它可以在任何给定时间根据输入进行操作,使得系统从一个状态转换到另一个状态,或者是使一个输出或者一种行为的发生,一个有限状态机在任何瞬间只能处于一种状态。
State 状态基类,定义了基本的Enter,Update,Exit三种状态行为,通常在这三种状态行为的方法里会写一些逻辑。每个State都会有StateID(状态id,可以是枚举等),FSMControl(控制该状态的状态控制器的引用),Check方法(用来进行状态判断,并返回StateID,通过FSMControl驱动)
unity引擎基础
unity引擎基础
生命周期
Reset 是在用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。Reset最常用于在检视面板中给定一个最常用的默认值。
Awake 用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次,当脚本设置为不可用时,运行时Awake方法仍然会执行一次。Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如 GameObject.FindWithTag 这样的函数搜索它们。每个游戏物体上的Awke以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息 ,Awake总是在Start之前被调用。它不能用来执行协同程序。
OnEnable当对象变为可用或激活状态时被调用事件监听。
Start 在behaviour的生命周期中只被调用一次。它和Awake的不同是Start只在脚本实例被启用时调用。你可以按需调整延迟初始化代码。Awake总是在Start之前执行。这允许你协调初始化顺序。
FixedUpdate 当MonoBehaviour启用时,其在每一帧 ...
Fungus 笔记
Fungus 文档地址首页 ·snozbot/fungus 维基 — Home · snozbot/fungus Wiki
简单入门:
【Unity 实用插件篇】 | 使用Fungus插件制作一个对话系统,简单好学易上手-腾讯云开发者社区-腾讯云
Fungus通信方式Fungus 是一个基于 Unity 的叙事工具,它提供了强大的可视化编程功能,但有时你需要将 Fungus 与自定义的 C# 代码结合使用,以实现更复杂的游戏逻辑。以下是 Fungus 与代码通信的几种常见方式:
1. 通过 Message 通信Fungus 的 Message 是一种事件机制,可以在代码中触发 Fungus 的 Block 执行。
步骤:
在 Fungus Flowchart 中创建一个 Block,并添加 Message 命令,设置 Message 名称(例如 "StartDialogue")。
在 C# 脚本中调用 Flowchart.SendMessage 来触发该 Message。
示例代码:12345678910111213141516using UnityEngine ...
Dialogue System for Unity
目前在使用Fungus,这个插件后续再使用
Dialogue System for Unity使用(一)基本设置和功能介绍-CSDN博客
764424567/Demo_DialogueSystem: DialogueSystem插件Demo
https://www.bilibili.com/video/BV13Y4y1Y7di
Dialogue System for Unity: Quick Start
【Unity3D插件】Dialogue System for Unity插件分享《对话系统插件》-CSDN博客