我有一个可以装备多种武器的玩家对象.配备武器时,其变换的父级设置为其手.我已经搞砸了一段时间,并且不能让它对主机和客户端起作用.现在我正在尝试在服务器上装备武器,并告诉所有客户设置他们的父母变换.
public NetworkInstanceId weaponNetId;
[Command]
void Cmd_EquipWeapon()
{
var weaponObject = Instantiate (Resources.Load ("Gun"),
hand.position,
Quaternion.Euler (0f, 0f, 0f)) as GameObject;
weaponObject.transform.parent = hand;
NetworkServer.Spawn (weaponObject);
//set equipped weapon
var weapon = weaponObject.GetComponent<Weapon> () as Weapon;
weaponNetId = weaponObject.GetComponent<NetworkIdentity> ().netId;
Rpc_SetParentGameobject (weaponNetId);
}
[ClientRpc]
public void Rpc_SetParentGameobject(NetworkInstanceId netID)
{
weaponNetId = netId;
}
Run Code Online (Sandbox Code Playgroud)
在更新中,我正在更新武器转换
void Update () {
// set child weapon tranform on clients
if (!isServer) {
if (weaponNetId.Value != 0 && !armed) {
GameObject child = NetworkServer.FindLocalObject (weaponNetId); …Run Code Online (Sandbox Code Playgroud) network-programming multiplayer unity-game-engine unity-networking
我想在另一个脚本的 Start() 之前运行一个脚本的 Start() 。是否可以?您可以选择脚本的执行顺序吗?
如果我使用 one-layer yield return,StopCoroutine()可以成功停止我的协程。请参阅下面的代码示例...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestStopcoroutine : MonoBehaviour {
IEnumerator co = null;
// Use this for initialization
void Start () {
co = FunA();
StartCoroutine(co);
}
private IEnumerator FunA() {
Debug.Log("Enter FunA...");
yield return RepeatPrint();
Debug.Log("FunA end...");
}
private IEnumerator RepeatPrint() {
for (int i = 0; i < 5; i++) {
Debug.Log(i);
yield return new WaitForSeconds(1);
}
}
/// <summary>
/// Set this function to a button on …Run Code Online (Sandbox Code Playgroud) 我有一个Unity应用程序和一个由Visual Studio 2013创建的C#DLL,我想调试它.我这样做是通过进入DEBUG > Attach to ProcessVisual Studio 2013内部,如果我选择Native代码,我可以设置C++代码的断点等.但是,当我选择.NET 3.5的选项时,它表示断点永远不会达到符号尚未加载.
如何为Visual Studio 2013加载.NET 3.5的调试符号?
我有一组 3D 点,或者实际上是小球体,我需要使用 Unity 3D 将它们用尽可能小的 3D 框包围。
在封闭框只能移动和缩放的情况下,解决方案非常简单,您只需迭代所有点并封装每个点即可。但我还需要找到盒子的最佳方向。
因此,为了用 ASCII 来说明问题,给出一个只有两点的基本 2D 场景:
Y
| * (0,1)
|
|
|
| * (1,0)
-------------------- X
Run Code Online (Sandbox Code Playgroud)
使用规则增长的边界框,您最终会得到一个非常大的封闭框,其中大部分为空白,而在这种情况下,我需要一个非常薄且绕 Z 轴旋转约 45 度的框。基本上只是一条连接两点的线。
但我永远不知道需要将多少点组合在一起。正如前面提到的,它必须以 3D 模式运行。
到目前为止,我只尝试了基本方法,即不旋转封装盒以获得最佳配合。结果确实离我需要的还很远。
我正在考虑一种基于遗传算法的强力方法,我生成大量随机框,然后简单地选择面积最小的框,同时仍包含所有点。然而,这太慢了。
GameObject go = points[0];
Bounds b = new Bounds(go.transform.position,go.transform.localScale);
for (int i=1;i<points.Count;i++)
{
go = points[i];
b.Encapsulate(new Bounds(go.transform.position, go.transform.localScale));
}
GameObject containingBox = Instantiate(boxPrefab);
containingBox.transform.position = b.center;
containingBox.transform.localScale = b.size;
containingBox.transform.rotation= Quaternion.Identity; //How to calculate?
Run Code Online (Sandbox Code Playgroud) 我正在尝试为自动 Unity 构建设置 Jenkins 服务器。
因此,我编写了两个(在我看来)基本相同的批处理脚本。
这两个脚本都由 Jenkins 通过一个Execute Windows batch command步骤作为构建步骤运行
命令: E:\unityImport.bat
然后Execute Windows batch command第二步使用
命令: E:\unityBuild.bat
它们都有相同的开头,因为我需要收集一些文件路径,特别是项目的统一版本。所以在这两个脚本中,我使用完全相同的解析和字符串拆分项目版本的方式。它们之间唯一不同的是,第一个启动 Unity 并将专用的unitypackage(保存在下一步中执行的方法)导入项目,而第二个再次启动 Unity 以执行实际构建(不幸的是它没有不能一次性工作...... Unity 似乎尝试在unitypackage导入之前执行该方法)。
然而,第二个脚本总是失败并出现语法错误
")" 不能在这里进行语法处理。
我试图实现的是
读出文件的内容 %WORKSPACE%\ProjectSettings\ProjectVersion.txt
SET /p TEST=<%WORKSPACE%\ProjectSettings\ProjectVersion.txt
Run Code Online (Sandbox Code Playgroud)
的内容%TEST%通常看起来像例如
m_EditorVersion: 2019.3.4f1
Run Code Online (Sandbox Code Playgroud)
和ECHO. ProjectVersion.txt = %TEST%看起来像
ProjectVersion.txt = m_EditorVersion: 2019.3.4f1
Run Code Online (Sandbox Code Playgroud)字符串拆分以便只取包含版本号的最后一部分
for %%x in (%TEST::= %) do (
SET "VALUE=%%x"
SET "UNITY_VERSION=!VALUE:~0,-2!"
)
Run Code Online (Sandbox Code Playgroud)
所以%UNITY_VERSION%通常包含例如2019.3.4. 我不会拆分更多,因为也有两位数的 Unity 版本,例如 …
我试图在正在制作的游戏中获得慢动作,但它看起来确实很滞后。我使用 Unity 提供的标准资源中的 FPS 控制器。我将以下脚本附加到它:
function Update ()
{
if (Input.GetKeyDown ("q"))
{
Time.timeScale = 0.5;
}
if (Input.GetKeyDown ("e"))
{
Time.timeScale = 2.0;
}
if (Input.GetKeyDown ("t"))
{
Time.timeScale = 1.0;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个与此类似的问题http://answers.unity3d.com/questions/39279/how-to-get-smooth-slow-motion.html
但对该问题给出的修复不起作用。我尝试向其添加刚体并将插值设置为插值,但它没有执行任何操作。(我从“使用重力”中删除了勾号,因为角色开始飞行)。我是 Unity 和脚本方面的新手,所以请对我宽容点。
谢谢。
我在使用 LOD 组时遇到问题,因为我想知道我在屏幕上看到的当前活动 LOD 级别是哪个。我只能通过以下方式访问百分比
GameObject.GetComponent<LODGroup>().GetLODs()[size].screenRelativeTransitionHeight;
Run Code Online (Sandbox Code Playgroud)
有人知道如何解决这个问题吗?提前致谢。
我有一个如下所示的代码:
from sqlalchemy import create_engine
import pandas as pd
# load the CSV
df = pd.Series()
df['raw'] = pd.read_csv('./data/Iris.csv',index_col='Id')
# Connect to the mysql, and use database "datasets"
engine = create_engine('mysql://root:root@127.0.0.1')
engine.execute("USE Datasets") # select new db
# Write data
table_name = 'IRIS'
df['raw'].to_sql(table_name, engine, if_exists='append', index=False)
Run Code Online (Sandbox Code Playgroud)
数据已正确插入数据库,之后可以加载,但命令产生错误:
> --------------------------------------------------------------------------- AttributeError Traceback (most recent call
> last) <ipython-input-6-cfb9b0f5c930> in <module>()
> 1 table_name = 'IRIS'
> 2
> ----> 3 df['raw'].to_sql(table_name, engine, if_exists='append', index=False)
>
> ~/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py in
> to_sql(self, …Run Code Online (Sandbox Code Playgroud) 我想使用脚本旋转给定 x、y、z 旋转值的人形角色的头部(不使用场景中的任何其他对象作为“看”方向)。
设置类人角色的绑定(humanoid prefab --> Rig --> Animation Type: Humanoid --> Configure --> Muscles & Settings),你会看到如下界面:https://docs.unity3d。 com/Manual/MuscleDefinitions.html
在此菜单中,在“头部”下,您可以拖动滑块来上下移动您的人形头部。我想用脚本实现同样的效果,但我不知道如何做到这一点。
这个问题从来没有用示例代码得到正确的答案:https : //answers.unity.com/questions/824628/can-we-using-script-to-moving-the-muscles-in-unity.html
我想我必须对HumanPose.muscles( https://docs.unity3d.com/ScriptReference/HumanPose-muscles.html )做一些事情,但是由于缺少代码示例,我不知道如何解决这个问题。
编辑 3:此链接有一个 HumanPose 的代码示例,但我还没有让它工作:https ://forum.unity.com/threads/humanposehandler.430354/
如何通过脚本给定值来获取人形角色的头部肌肉并旋转它们?(或任何其他方式如何使用头部旋转值旋转头部,而场景中没有其他对象)。任何帮助,将不胜感激。
我收到一条 JSON 格式的消息,从中提取弧度值并将其更改为度数:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json.Linq; // JSON reader; https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347
public class HeadRotator : MonoBehaviour {
Quaternion rotation = Quaternion.identity;
// Radians to degree
float Rad2Degree = 180 / …Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×1
batch-file ×1
coroutine ×1
debugging ×1
geometry ×1
jenkins ×1
multiplayer ×1
python ×1
sql ×1
unityscript ×1