一般信息
我还在学习C#.为了帮助自己,我正在尝试创建一个程序,它将自动将我的所有本地项目与我的FTP服务器上的文件夹同步.这样,无论我是在学校还是在家,我总是可以使用相同的项目.
我知道像Dropbox这样的程序已经为我做了这个,但我想创造类似的东西,我自己会教我很多东西.
问题
我迈向目标的第一步是从我的FTP服务器下载所有文件,子目录和子文件.我已经设法从下面的代码下载目录中的所有文件.但是,我的代码只列出了主目录中的文件夹名称和文件.子文件夹和子文件永远不会返回,也永远不会下载.除此之外,服务器返回550错误,因为我正在尝试下载文件夹,就像它们是文件一样.我已经在这上面了4个多小时了,但我找不到任何关于如何解决这些问题并让它发挥作用的事情.因此,我希望你们能帮助我:)
码
public string[] GetFileList()
{
string[] downloadFiles;
StringBuilder result = new StringBuilder();
WebResponse response = null;
StreamReader reader = null;
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
request.UseBinary = true;
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(ftpUserName, ftpPassWord);
request.KeepAlive = false;
request.UsePassive = false;
response = request.GetResponse();
reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
result.Remove(result.ToString().LastIndexOf('\n'), 1);
return result.ToString().Split('\n');
}
catch (Exception ex)
{
if …Run Code Online (Sandbox Code Playgroud) 简而言之,我有一个非常简单的多人游戏.这是Roll A Ball游戏(Unity3D教程).所以现在我让球员等完美地产生,每个人都能完美控制自己的球.
但问题出在这里:我有一个默认的主摄像头.由于只有本地玩家本身需要看到它,我认为尝试为服务器上的每个玩家生成一个单独的摄像头是没有意义的.
但是,为了使相机跟随播放器,我需要将它附加到播放器游戏对象.显然我无法将它附加到播放器预制件上,因为它是相机需要遵循的克隆.但由于播放器是由网络管理器组件生成的,因此我不知道如何引用此克隆.
我自己尝试过的:
public class CameraController : NetworkManager
{
public GameObject playerPrefab;
public Transform target;
private Vector3 offset;
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
{
GameObject player = (GameObject)Instantiate(playerPrefab, new Vector3(0, 0.5f, 0), Quaternion.identity);
target = player.transform;
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
}
void Start()
{
offset = transform.position - target.position;
}
void LateUpdate()
{
transform.position = transform.position + offset;
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得非常奇怪,因为你可以清楚地看到,NetworkManager对象上没有NetworkIdentity组件.我在过去的4个小时里一直在尝试很多事情而且我不能这样做.所以现在我希望你们能帮助我.
编辑:这是网络管理器正常生成播放器的方式.如您所见,它没有代码:
常规
使用 Unity 引擎开发游戏模组。
我尝试使用以下代码附加到activeSceneChanged事件的问题:
SceneManager.activeSceneChanged += OnSceneChanged;
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
CS0229 “SceneManager.activeSceneChanged”和“SceneManager.activeSceneChanged”之间存在歧义
检查这里发生的情况后,该成员似乎activeSceneChanged既是用户生成的又是 [CompilerGenerate]:
老实说,我自己尝试过,
我根本不知道如何解决这样的问题。我以前从未遇到过。问了我认识的其他一些开发人员,但他们也从未见过。使用 ILSpy 反编译 Unity DLL 文件,结果发现 CompilerGenerate 代码不在那里(有点有意义,因为它是由我假设的编译器生成的)。
我真的很想得到一些关于如何处理和解决这个问题的帮助。
编辑
为了帮助加快速度,这里有一个指向该模组的 Github 链接: https: //github.com/skarab42/ValheimTwitch
在 Plugin.cs 的第 93 行弹出错误
说我必须遵循以下代码:
var numb = $(selector).length;
Run Code Online (Sandbox Code Playgroud)
现在我想基于此动态地创建变量:
var temp+numb = ...
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
编辑:
我知道有些人会告诉我使用数组.通常我会同意,但在我的情况下,var已经是一个数组,除了创建动态名称,我没有看到其他解决方案.
根据.remove()| jQuery API文档,将选择器作为可选参数包含在内是完全有效的.remove().引用:
我们还可以包含一个选择器作为可选参数.例如,我们可以重写以前的DOM删除代码,如下所示:
$( "div" ).remove( ".hello" );
Run Code Online (Sandbox Code Playgroud)
所以我写了2个div来测试这个:
<div id="div1">test
<div id="div2">Remove</div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用它作为jQuery:
$( document ).ready(function() {
$( "#div1" ).remove( "#div2" );
});
Run Code Online (Sandbox Code Playgroud)
它没有按预期删除div.结果是:
测试
删除
而是使用:
$( document ).ready(function() {
$("#div2").remove();
});
Run Code Online (Sandbox Code Playgroud)
按预期删除div.那我在这里错过了什么?文档错了吗?我误解了什么吗?
一般信息
我目前正在使用websocket进行聊天系统.除了消息之外,我使用相同的websocket向用户显示当前在线的用户列表.
问题
因为几天后我一直试图用OOP方法编写所有Javascript脚本.到目前为止一切都很顺利,但现在我已经弄错了一个错误我真的不明白:
Node.appendChild的参数1不是对象
代码
我尽可能缩小代码范围,仅代表重要部分:
var CB = CB || {};
CB.messages = {
userListLayout: function(Username){
var userListTable = "<table class='userTable' data-user='"+ Username +"'><tbody><tr><td><img src='layout/images/default_profile.png'></td><td>" + Username + "</td></tr></tbody></table>";
return userListTable;
}
}
CB.users = {
set: function(Usernames) {
var List = document.getElementById('usersList'); // Represents an empty div
var i, j = Usernames.length, ListUser;
for (i=0; i<j; i++) {
ListUser = CB.messages.userListLayout(Usernames[i]);
List.appendChild(ListUser); // Error
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题是:我做错了什么,解决它的最佳方法是什么?
我正在开发一个 Greasemonkey 脚本,该脚本将一个按钮注入聊天系统 (Gitter),允许您发送默认消息。(不是垃圾邮件。管理员可以发送诸如行为准则之类的消息)。
假设我已经注入了一个按钮:
<button onclick='setTimeout( function() { showMsg() }, 10 );'>Send default message</button>
Run Code Online (Sandbox Code Playgroud)
按照这个问题的建议:Javascript: Function is defined, but Error say.. Function is not found !(奇怪)使用,setTimeout()因为在 GM 中定义的函数对主窗口不可用。
出于测试目的,该函数是一个简单的控制台日志:
function showMsg(){
console.log('showMsg triggered');
}
Run Code Online (Sandbox Code Playgroud)
问题是这仍然返回一个“showMsg 未定义”。因此,按照前面提到的问题中提供的其他建议,我尝试了:
unsafeWindow.showMsg = function(){
console.log('showMsg triggered');
}
Run Code Online (Sandbox Code Playgroud)
然而,这让我返回:
错误:访问对象的权限被拒绝
奇怪的是,这似乎只发生在创建 div 元素并将innerHTML按钮注入该 div 时。在实际创建这样的按钮时:
var btn = document.createElement('button');
btn.onclick = function(){ showMsg(); };
Run Code Online (Sandbox Code Playgroud)
它按预期工作。
一些可能有助于找到答案的附加信息:
Gitter 聊天使用 iframe 来显示聊天消息和消息输入字段。iframe 位于同一台服务器上,因此不存在相同原始策略问题。
按钮注入主体。这里有两个关于我如何尝试注射它们的例子。
(工作版)
var iframe, iframeDoc;
var chatContainer;
var …Run Code Online (Sandbox Code Playgroud) 我需要你们的一点帮助来修复此小代码。我们的想法是删除其内部的任何数字$remove_str从$list_str。如您所见,我已经尝试通过将两个字符串都转换为数组来解决问题,并简单地遍历列表数组以在remove数组中搜索值,如果匹配则将其删除。但是,结果与我预期的完全不同。我一直在玩弄它一段时间,但是我的头在转动,以至于无法找到解决方案。
<?php
$remove_str = '5,6,8,56,195';
$list_str = '1,3,6,9,34,150,195,213';
$remove_arr = explode(',', $remove_str);
$list_arr = explode(',', $list_str);
foreach($list_arr as $value){
$position = array_search($value, $remove_arr);
if($position !== false){
unset($list_arr[$position]);
} else {
continue;
}
}
$result = implode(',', $list_arr);
echo $result;
?>
Run Code Online (Sandbox Code Playgroud)
结果:
1,6,9,150,195,213
预期结果:
1,3,9,34,150,213